是否有更严格的.Single()版本?

时间:2011-12-12 13:18:44

标签: c# .net linq

是否存在更严格的.Single()版本,如果从查询中返回多个异常,则抛出异常?我总是可以创建一个扩展方法,但想知道我是否正在重新发明已存在的东西。

4 个答案:

答案 0 :(得分:13)

如果结果包含多个元素(或者它是空的),

Single()已经抛出InvalidOperationException。您可能会将其与First()混淆,如果有多个元素,则不会抛出。

答案 1 :(得分:5)

答案 2 :(得分:3)

在这种情况下,

Single()已经抛出了InvalidOperationException。

顺便说一句,这意味着它在后台运行足够的代码来尝试获取至少两个元素 - 因此如果成功就可以抛出,这意味着如果你知道只有First(),那么First()会更高效一个这样的项目,或不关心。在Single是另一种可能性的情况下选择{{1}}介于唯一合理的方法和危险的优化之间,具体取决于具体情况。

答案 3 :(得分:2)

来自the documentation

  

返回序列的唯一元素,如果出现异常则抛出异常   序列中没有一个元素。

我认为您让SingleFirst感到困惑,其行为与您描述的方式相同。