我写了这段代码来寻找一个'Vendedor'(推销员),它满足用户在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方法,但我一直坚持:
返回序列的唯一元素,如果是,则返回默认值 序列是空的;如果有更多,此方法会抛出异常 比序列中的一个元素。
在这种情况下,如文档中所述的“默认值”,我希望能够对待这个“例外”,但我不知道它是什么?
有人可以解释一下这个“默认值”是什么?我刚刚开始使用Entity Framework,所以不要对我太过刻意。
提前致谢。
答案 0 :(得分:3)
返回的是default(T)
,这意味着null
表示参考类型,“0”表示值类型。
default(T)
将返回null
,对于数值类型,将返回零。对于结构体,它将返回初始化为struct或null的结构的每个成员,具体取决于它们是值还是引用类型。对于可以为空的值类型,default
返回System.Nullable<T>
,它会像任何结构一样进行初始化。
答案 1 :(得分:1)
对于可空类型,默认值为null。
对于0的整数,我认为所有其他数字也是如此。我会看看我是否能找到文档...
“reference和nullable类型的默认值为null。”
答案 2 :(得分:1)
可空类型和引用类型(这将是您的Vendor
类)的默认值为null
。
对于其他类型的默认值,您可以查看此default value table。它通常为0,即使enums
也是如此;如果您在enum
。
答案 3 :(得分:0)
对于可空类型,它为null,对于整数,它为0
来自here: -
reference和nullable类型的默认值为nullptr。
SingleOrDefault方法不提供指定默认值的方法 值。如果要指定除以外的默认值 默认(TSource),使用 DefaultIfEmpty(IEnumerable,TSource)