Single和SingleOrDefault有什么区别?
感谢。
答案 0 :(得分:4)
区别在于他们如何处理空序列。
Single
会抛出异常。SingleOrDefault
将返回值default(T)
。对于引用类型和nullables,默认值为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
,它允许您指定序列为空时的默认值,而不是仅使用类型的默认值。
答案 1 :(得分:3)
单
返回满足指定条件的序列中唯一的元素,如果存在多个此类元素,则抛出异常。
单人或默认:
返回序列的唯一元素,如果序列为空,则返回默认值;如果序列中有多个元素,则此方法抛出异常。
因此,如果您不希望该属性/列接受NULL,则可以使用SingleOrDefault使用默认值填充属性/列。
答案 2 :(得分:1)
如果查询的结果不是单个结果,则单个将抛出异常。
如果您的查询有多个结果,SingleOrDefault将仅抛出异常。如果没有结果,您将返回默认值(通常为null
)。
答案 3 :(得分:1)
在Linq连接中使用时,它与SQL中的外连接有点类似。
答案 4 :(得分:0)
如果有多个结果,则会抛出异常。 SingleOrDefault(我假设你的意思是SingleOrDefault而不是SingleifDefault)如果有多个结果,将返回null。