linq-to-sql SingleOrDefault返回null

fre*_*hie 0 c# linq-to-sql

我正在写一个linq-to-sql查询,我正在从表中加载一个ID(bigint数据库中的a long和我的代码中的一个),如下所示:

var SomeQuery = (from x in ...
                 select x.ID).SingleOrDefault();
Run Code Online (Sandbox Code Playgroud)

当我得到结果时,我会使用SingleOrDefault以防返回为空.这是否意味着如果结果为空,SomeQuery变量将为0或null?

谢谢.

par*_*mar 5

如果您查看SingleOrDefault的文档

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

它清楚地表明,如果序列为空,它将返回默认值,long为bigint,bigint为0. 为何解释如下

默认关键字状态的文档

在泛型类和方法中,出现的一个问题是,如果您事先不知道以下内容,如何为参数化类型T分配默认值:

T是引用类型还是值类型.

如果T是值类型,则它是数值还是结构.

给定参数化类型T的变量t,语句t = null仅在T是引用类型时有效,并且t = 0仅适用于数值类型而不适用于结构.解决方案是使用default关键字,它将为引用类型返回null, 为数值类型返回.