2011-10-28 76 views
7

我正在嘗試查找linq查詢,以便我可以將它寫入if語句中。列表包含linq中的ID

僞代碼:

IDList是一個整數列表的列表< int>的

if (IDList.Contains (Object.Id)) Do something 

,但我似乎無法找出有什麼需要。

在沒有-LINQ這個工程:

foreach(int id in IDList) 
    { 
     if (id == Object.Id) 
      break; 
    } 

,但我想把它當作一個行,如果可能的。

我第一次嘗試這樣的:

IDList.Contains(Object.Id); 

但是,這將引發一個編譯錯誤

我不知道它應該是這兩個中的一個?

IDList.Any(id => id == Object.Id) 

IDList.Exists(id => id == Object.Id); 

我完全不懂的lambda表達式和事物如何運作或安迪之間的差異,存在的,所以我不知道如果我沿着錯誤的路線是?

+0

你想做什麼,你可以從邏輯上解釋,因爲這在問題中不明確 – Ankur

回答

17

您可以簡單地這樣做:

if (MyList.Any(c => c.Id == MyObject.Id)) { } 

假設MyListIEnumerable<T>(或任何來自IEnumerable<T>派生),其中T是具有同類型物業Id的命名Id屬性的對象在MyObject實例上。

5
IDList.Any(id => id == Object.Id) 

是確定的,它會回報你true如果至少一個元素,滿足您的謂語,存在。