![](/img/trans.png)
[英]When does EF Core LINQ query result in null coalescing despite SingleOrDefault() would return null?
[英]linq-to-sql SingleOrDefault return when null
我正在编写一个linq-to-sql查询,并且正在从一个表中加载一个ID(数据库中的bigint
和我的代码中的long
bigint
),如下所示:
var SomeQuery = (from x in ...
select x.ID).SingleOrDefault();
得到结果后,如果返回为空,则使用SingleOrDefault
。 这是否意味着如果结果为空,则SomeQuery
变量将为0还是null?
谢谢。
如果您查看SingleOrDefault的文档
返回序列的唯一元素;如果序列为空,则返回默认值;否则,返回默认值。 如果序列中有多个元素,则此方法将引发异常。
明确指出,如果序列为空,则将返回默认值 ,long和bigint的默认值为 0 。 为什么在下面解释
默认关键字状态的文档
在泛型类和方法中,出现的一个问题是,当您事先不了解以下内容时,如何将默认值分配给参数化类型T:
T是引用类型还是值类型。
如果T是值类型,则它是数字值还是结构。
给定参数化类型T的变量t,语句t = null仅在T是引用类型且t = 0仅适用于数值类型而不适用于结构的情况下才有效。 解决方案是使用默认关键字,对于引用类型,该关键字将返回null,对于数值类型,将返回零 。
如果未找到任何元素,则返回默认值。(int的默认值为0)
如果找到一个,则返回值。
如果发现多个,则抛出异常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.