2011-06-20 40 views
4

我仍然在學習LINQ,並且使用類似於以下內容的匿名類型集合。 [mycontext]是我的實際數據源的佔位符:在匿名類型集合上使用Contains()

var items = from item in [mycontext] 
      select new { item.col1, item.col2, item.col3 }; 

如何使用items.Contains()來確定是否items包含匹配的價值?

我正在搜索的值是而不是的匿名類型。所以我需要編寫自己的比較邏輯,最好是作爲lambda表達式。

+1

當你在學習的時候,拿一份LinqPad。這是一個非常有用的工具,有很多很好的例子。 –

+0

@Mr穆斯:上週就明白了。謝謝。 –

回答

4

如果你喜歡使用一個謂詞,那麼你可能會更好過使用Any而不是Contains

bool exists = items.Any(x => x.col1 == "foo" 
          && x.col2 == "bar" 
          && x.col3 == 42); 
2

嘗試LINQ Any()方法:

if (items.Any(i => i.col1 == myOtherThing.Value)) 
{ 
    // Effectively Contains() == true 
} 
2

或者你可以使用「任何「有謂詞的方法。

bool exists = items.Any(i => {logic});