我正在编写一个 linq-to-sql 查询,我正在从一个表中加载一个 ID(bigint
数据库中的一个和我的代码中的一个),如下所示:long
var SomeQuery = (from x in ...
select x.ID).SingleOrDefault();
当我得到结果时,我会SingleOrDefault
在返回为空的情况下使用。这是否意味着如果结果为空,则SomeQuery
变量将为 0 或 null?
谢谢。
我正在编写一个 linq-to-sql 查询,我正在从一个表中加载一个 ID(bigint
数据库中的一个和我的代码中的一个),如下所示:long
var SomeQuery = (from x in ...
select x.ID).SingleOrDefault();
当我得到结果时,我会SingleOrDefault
在返回为空的情况下使用。这是否意味着如果结果为空,则SomeQuery
变量将为 0 或 null?
谢谢。
如果您查看SingleOrDefault 的文档
返回序列的唯一元素,如果序列为空,则返回默认值;如果序列中有多个元素,此方法将引发异常。
它明确指出,如果序列为空,它将返回long 和 bigint 为0的默认值。 为什么下面解释
默认关键字状态的文档
在泛型类和方法中,出现的一个问题是,当您事先不知道以下内容时,如何为参数化类型 T 分配默认值:
T 是引用类型还是值类型。
如果 T 是值类型,无论是数值还是结构。
给定参数化类型 T 的变量 t,语句 t = null 仅在 T 是引用类型且 t = 0 仅适用于数值类型而不适用于结构时才有效。解决方案是使用 default 关键字,它将为引用类型返回 null,而 为数值类型返回零。
如果没有找到元素,则返回默认值。(int的默认值为0)
如果找到,则返回值。
如果找到多个,则抛出异常。