Single 和 SingleOrDefault 有什么区别?
谢谢。
最佳答案
区别在于它们如何处理空序列。
-
Single
如果没有找到元素,则抛出异常。 -
SingleOrDefault
如果未找到元素,则返回值default(T)
。对于引用类型和可空值,默认值为 null。对于不可为 null 的值类型,它是 0 或类似值。
First
和 FirstOrDefault
方法也有关系。以下是表格中的所有四个:
method no records multiple records --------------------------------------------- Single exception exception SingleOrDefault default(T) exception First exception first record FirstOrDefault default(T) first record
所有这些方法还有一个带有谓词的重载。
另一个相关的方法是DefaultIfEmpty
这允许您指定序列为空时的默认值,而不是仅使用类型的默认值。
关于linq 在 null 上加入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4662421/