我正在写一个linq-to-sql查询,我正在从表中加载一个ID(数据库中的bigint
和我的代码中的long
),如下所示:
var SomeQuery = (from x in ...
select x.ID).SingleOrDefault();
当我得到结果时,如果返回为空,我使用SingleOrDefault
。这是否意味着如果结果为空,SomeQuery
变量将为0或为空?
感谢。
答案 0 :(得分:5)
如果查看documenation for SingleOrDefault
返回序列的唯一元素,如果是,则返回默认值 序列是空的;如果有更多,此方法会抛出异常 比序列中的一个元素。
它清楚地表明,如果序列为空,它将返回default value,其中long为long,bigint为 0 。 为什么在下面说明
在通用类和方法中,出现的一个问题是如何分配 当你不知道时,参数化类型T的默认值 提前关注:
T是引用类型还是值类型。
如果T是值类型,则它是数值还是结构。
给定参数化类型T的变量t,语句t = null 仅当T是引用类型且t = 0才有效时才有效 数值类型,但不适用于结构。解决方案是使用 default关键字,它将为引用类型返回null,零 对于数值类型。
答案 1 :(得分:0)
如果未找到任何元素,则返回默认值。(int的默认值为0)
如果找到,则返回值。
如果找到多个异常,则抛出异常。