我正在写一个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?
谢谢.
如果您查看SingleOrDefault的文档
返回序列的唯一元素,如果序列为空,则返回默认值; 如果序列中有多个元素,则此方法抛出异常.
它清楚地表明,如果序列为空,它将返回默认值,long为bigint,bigint为0. 为何解释如下
默认关键字状态的文档
在泛型类和方法中,出现的一个问题是,如果您事先不知道以下内容,如何为参数化类型T分配默认值:
T是引用类型还是值类型.
如果T是值类型,则它是数值还是结构.
给定参数化类型T的变量t,语句t = null仅在T是引用类型时有效,并且t = 0仅适用于数值类型而不适用于结构.解决方案是使用default关键字,它将为引用类型返回null, 为数值类型返回零.