“序列不包含匹配元素”而不是null

时间:2013-02-07 18:55:48

标签: c# linq

myCollection不包含Id == 10的元素:

var myVar1 = myCollection.Where(q => q.Id == 10);

在上面的例子中,myVar1只代表空集合。

但是为什么在以下示例中我得到 序列不包含匹配元素 例外,而不只是null中的myVar2

var myVar2 = myCollection.First(q => q.Id == 10);

如何正确解释?

2 个答案:

答案 0 :(得分:7)

如果您想要第一个匹配项,请使用FirstOrDefault;如果没有,则使用null。

var myVar2 = myCollection.FirstOrDefault(q => q.Id == 10);

答案 1 :(得分:4)

因为First()期望返回一个且只有一个结果。它并不意味着处理一个或没有结果。

您需要FirstOrDefault()