0

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

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

当我得到结果时,我会SingleOrDefault在返回为空的情况下使用。这是否意味着如果结果为空,则SomeQuery变量将为 0 或 null?

谢谢。

4

2 回答 2

5

如果您查看SingleOrDefault 的文档

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

它明确指出,如果序列为空,它将返回long 和 bigint 为0的默认值为什么下面解释

默认关键字状态的文档

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

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

如果 T 是值类型,无论是数值还是结构。

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

于 2012-07-21T17:31:34.807 回答
0

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

如果找到,则返回值。

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

于 2012-07-21T17:36:11.623 回答