2011-06-20 10 views
4

私はまだLINQを学んでおり、次のようなものを使って匿名型のコレクションを取得しています。 [あるMyContext]私の実際のデータソースのプレースホルダです:匿名型のコレクションにContains()を使用

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

にはどうすればitemsが一致する値が含まれているかどうかを判断するためにitems.Contains()を使用することができますか?

私が探している価値はではなく、の匿名タイプです。だから私は自分自身の比較ロジックを、ラムダ式として書くことが望ましいでしょう。

+1

学習中は、LinqPadのコピーを手に入れてください。それは良い例がたくさんある本当に便利なツールです。 –

+0

@Mr Moose:先週それを入手しました。ありがとう。 –

答えて

4

を:

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

LINQ Any()方法試してください:あなたは述語を使用することを好む場合、あなたはおそらく、むしろContainsよりAnyを使用して方がいいでしょう

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

それとも "を使用することができます任意の "述語を持つメソッド。

bool exists = items.Any(i => {logic}); 
関連する問題