2013-02-07 124 views
0

myCollection不包含元件与Id == 10“序列不包含匹配元件”,而不是仅仅无效

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

在上述情况下的myVar1表示只是空集合。

但为什么要在下面的例子中,我得到一个序列中没有匹配的元素例外,而不是仅仅nullmyVar2

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

如何正确解释?

回答

4

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

您需要FirstOrDefault()

7

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

var myVar2 = myCollection.FirstOrDefault(q => q.Id == 10); 
相关问题