null上的linq连接

null上的linq连接,linq,Linq,单人和单人或默认之间有什么区别 谢谢 单个: 返回序列中满足指定条件的唯一元素,如果存在多个此类元素,则引发异常 单个或默认值: 返回序列的唯一元素,如果序列为空,则返回默认值;如果序列中有多个元素,此方法将引发异常 因此,如果不希望属性/列接受空值,可以使用SingleOrDefault使用默认值填充该属性/列。区别在于它们如何处理空序列 如果找不到元素,则引发异常 如果未找到元素,则返回值default(T)。对于引用类型和nullables,默认值为null。对于不可为null的值类型,

单人和单人或默认之间有什么区别

谢谢

单个:

返回序列中满足指定条件的唯一元素,如果存在多个此类元素,则引发异常

单个或默认值:

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


因此,如果不希望属性/列接受空值,可以使用SingleOrDefault使用默认值填充该属性/列。

区别在于它们如何处理空序列

  • 如果找不到元素,则引发异常
  • 如果未找到元素,则返回值
    default(T)
    。对于引用类型和nullables,默认值为null。对于不可为null的值类型,它为0或类似值
文中还介绍了该方法的原理和方法。下面是一张表中的四个:

method no records multiple records --------------------------------------------- Single exception exception SingleOrDefault default(T) exception First exception first record FirstOrDefault default(T) first record 方法无记录多个记录 --------------------------------------------- 单一例外 SingleOrDefault默认(T)异常 第一个例外第一个记录 FirstOrDefault默认值(T)第一条记录 所有这些方法都有一个重载,它接受一个谓词


另一个相关方法是,如果序列为空,则允许您指定默认值,而不是仅使用类型的默认值。

如果查询的结果不是单一的,Single将引发异常


SingleOrDefault仅在查询有多个结果时才会引发异常。如果没有结果,您将返回默认值(通常为
null
)。

如果有多个结果,Single将抛出异常。如果存在多个结果,SingleOrDefault(我假设您的意思是SingleOrDefault而不是SingleifDefault)将返回null。

当在Linq联接中使用时,它与SQL中的外部联接类似。

SingleOrDefault
返回
默认值(T)
,这可能是
null
,但是对于例如
int
来说,它将是
0
@sixlettervariables:Mmmm,耶!我希望我能有一个像“我刚醒来”之类的借口,但现在想不起谢谢呃,我们都为此感到内疚……我只是不知道如果遗漏是“明显的”,那么编辑另一个人的帖子什么时候合适。