4

我编写了这段代码来寻找一个满足用户在 TextBox 中输入相同的“codigo”(id)条件的“供应商”(销售员):

using (TccContext context = new TccContext())
{
    Vendedor[] query = (from vendedor in context.Vendedores
                where vendedor.codigo == Convert.ToInt64(this.textBoxProcurarCodFuncionario.Text)
                select vendedor).ToArray();
    if (query.Length == 1)
    {
        textBoxCodigo.Text = query[0].codigo.ToString();
        textBoxNome.Text = query[0].nome;
        textBoxTotalVendaMensal.Text = query[0].totalVendaMensal.ToString();
    }
    else
    {
        MessageBox.Show("Código não encontrado,\n tente novamente...",
            "Atualizar Funcionário",
            MessageBoxButtons.OK,
            MessageBoxIcon.Error);
        this.Limpar();
    }
}

我想替换 SingleOrDefault 的 ToArray 方法,但我遇到了:

返回序列的唯一元素,如果序列为空,则返回默认值;如果序列中有多个元素,此方法将引发异常。

在这种情况下,文档中所说的“默认值”是什么,我希望能够处理这个“异常”,但我不知道它是什么?

有人可以解释一下这个“默认值”是什么吗?我刚开始使用实体框架,所以不要对我太苛刻。

提前致谢。

4

4 回答 4

3

返回的是default(T),这意味着null引用类型和值类型的“零”值。

default(T)将返回null引用类型和数值类型为零。对于结构,它将返回结构的每个成员,根据它们是值类型还是引用类型,初始化为零或空。对于可为空的值类型,default返回 a System.Nullable<T>,它像任何结构一样被初始化。

于 2013-08-25T19:26:38.587 回答
1

对于可空类型,默认值为空。

对于整数,它是 0,我认为所有其他数字也是如此。我看看能不能找到文档...

“引用和可空类型的默认值为空。”

http://msdn.microsoft.com/en-us/library/bb342451.aspx

于 2013-08-25T19:23:32.580 回答
1

可空类型和引用类型(这将是您的Vendor类)的默认值为null.

对于其他类型的默认值,您可以查看此默认值表。它通常为 0,即使对于enums; 如果您在enum.

于 2013-08-25T19:26:59.327 回答
0

对于可为空的类型,它是 null,对于整数,它是 0

这里:-

引用类型和可空类型的默认值为 nullptr。

SingleOrDefault 方法不提供指定默认值的方法。如果要指定 default(TSource) 以外的默认值,请使用 DefaultIfEmpty(IEnumerable, TSource)

于 2013-08-25T19:24:25.687 回答