2017-02-20 78 views
-2

如果我= {1,2}沒有問題。Linq表達式崩潰時,它找不到我在找什麼

如果iId = 3(或其他),爲什麼.First()會崩潰。

public class C { public int ID, public string nam } 
int i = 3; 
C c = new List<C>; 
c.Add(new C{ID = 1, nam="hello" }); 
c.Add(new C{ID = 2, nam=world" }); 
C r = c.First(e => e.ID.Equals(i)); 

例外情況是:

InvalidOperationException異常是未處理的用戶代碼

序列不包含匹配元件

我會認爲至少表達式將必須做的是返回null。 相反,它墜毀。
這對我毫無意義。 返回的null對我有意義。

你如何解決這個問題?你最好的做法是什麼?

回答

2

變化從First(e => e.ID.Equals(i))FirstOrDefault(e => e.ID.Equals(i)),那麼你會得到空值(因爲default(C)爲空,因爲這是一個引用類型的默認值),你可以處理你怎麼認爲合適的,而不是你的應用程序崩潰。

這裏的MDSN鏈接FirstOrDefault,如果你需要任何更多的信息/例子:
https://msdn.microsoft.com/en-us/library/bb340482(v=vs.110).aspx