linq-to-sql SingleOrDefault返回null

时间:2012-07-21 17:28:57

标签: c# linq-to-sql

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

var SomeQuery = (from x in ...
                 select x.ID).SingleOrDefault();

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

感谢。

2 个答案:

答案 0 :(得分:5)

如果查看documenation for SingleOrDefault

  

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

它清楚地表明,如果序列为空,它将返回default value,其中long为long,bigint为 0 为什么在下面说明

default keyword states的文件

  

在通用类和方法中,出现的一个问题是如何分配   当你不知道时,参数化类型T的默认值   提前关注:

     

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

     

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

     

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

答案 1 :(得分:0)

如果未找到任何元素,则返回默认值。(int的默认值为0)

如果找到,则返回值。

如果找到多个异常,则抛出异常。