2012-06-20 314 views
0

如何返回Linq查詢中的特定類型?我知道你可以使用ToList()返回一個特定對象的列表,但你如何返回一個非列表?Linq返回特定類型

MyObj x = from x in list where x.id == 99 select x; 
+0

您正在使用「特定類型」這個詞來表示「實例」。 –

回答

3
MyObj x = list.FirstOrDefault(i=>i.id == 99); 

替代IEnumerable方法,您可以使用返回單個項目:

  • list.Single(i=>i.id == 99):如果沒有找到匹配或多次找到匹配的拋出異常。
  • list.SingleOrDefault(i=>i.id == 99):如果找不到匹配項,則返回null,如果找到多個匹配項則引發異常。
  • list.First(i=>i.id == 99):如果找不到匹配項,則會引發異常。如果找到多個匹配項,則返回列表中的第一個項目。
  • list.FirstOrDefault(i=>i.id == 99):如果找不到匹配項,則返回null。如果找到多個匹配項,則返回列表中的第一個項目。
4
MyObj x = (from x in list where x.id == 99 select x).Single(); 
如果您預計ID可能不存在

,那麼你可以使用的SingleOrDefault爲類型(可能是在這種情況下空)返回默認值。

您當然可以使用First(),但我會保持警惕,因爲如果您希望只返回一個項目,這可能會隱藏錯誤。

1
MyObj x = list.Where(x => x.id == 99).FirstOrDefault();