2016-03-09 75 views
-4

我試圖按項目名稱查找項目。InvalidOperationException首次未找到時

Item item = Shop.Items.Values.First(i => i.Name.Contains(partOfName)) 

我預計明年

if (item == null) // if not found 
{ 
    // not found code 
} 

做......當未找到的項目我得到了InvalidOperationException

,想到的第一件事是

try 
{ 
    Item item = Shop.Items.Values.First(i => i.Name.Contains(partOfName)) 
} 
catch(InvalidOperationException ex) 
{ 
    // not found code 
} 

什麼來處理它的最佳方式?也許沒有嘗試/趕上?

編輯。 解決方案:

Item item = Shop.Items.Values.FirstOrDefault(i => i.Name.Contains(partOfName)) 

if (item == null) // if not found 
{ 
    // not found code 
} 
+0

第一種方法很容易創建自己,所以自己創建 – thijmen321

+0

您可以使用'FirstOrDefault'。 –

+3

從'Enumerable.First'的文檔中:'如果在源文件中找不到匹配的元素,''First '方法會拋出一個異常,如果沒有找到匹配的元素,返回一個默認值,使用'FirstOrDefault'方法。 「 –

回答

1

First將拋出。 FirstOrDefault將返回default<T>。對於參考類型,即null