2010-12-07 13 views
0

参加することのLINQラムダネストされた式を使用:私は次のコードを持っている二つのリスト

 List<MyClass> list1 = GetList1Contents(); 
     List<MyClass> list2 = GetList2Contents(); 

     foreach (MyClass eachClass in list1) 
     { 
      List<MyClass> results = (list2.Select(x => x.History.Select(z => (z.Key == eachClass.ID)))); 
     } 

MyClassのは、歴史と呼ばれるリストが含まれています。私がしようとしているのはリスト1の履歴エントリを持つlist2のエントリと一致しますが、コンパイラは自分の構文が嫌いです。

+2

おそらく、WhereまたはAny(および/またはJoin)を使用したいが、達成しようとしていることを正確に知ることは難しいだろう。履歴リストの種類は何ですか? History.KeyおよびMyClass.IDとは何ですか?詳細を教えてください。 –

+1

アイテムを見つけるには 'Select'ではなく' Where'(または 'Any'、' FirstOrDefault')を使うべきです。 'Select(z => z.Key == id)'は実際にはIEnumerable を返します。 –

答えて

2
List<MyClass> results = list2.Where(x => x.History.Any(z => (z.Key == eachClass.ID))).ToList(); 
関連する問題