2010-12-07 7 views
0

Je le code suivant:LINQ Lambda Nested Expression pour joindre deux listes

 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 contient une liste appelée Histoire. Ce que j'essaie de faire est de faire correspondre toutes les entrées dans la liste2 qui ont des entrées d'historique dans la liste 1 - mais le compilateur n'aime pas ma syntaxe.

+2

Vous souhaitez probablement utiliser Where or Any (et/ou une jointure), mais il est difficile de savoir exactement ce que vous essayez d'obtenir. Quel est le type de la liste Historique? Que sont History.Key et MyClass.ID? S'il vous plaît donner plus de détails. –

+1

Vous devriez utiliser 'Where' (ou' Any', 'FirstOrDefault') au lieu de' Select' pour trouver des éléments. 'Select (z => z.Key == id)' renvoie en fait un 'IEnumerable '. –

Répondre

2
List<MyClass> results = list2.Where(x => x.History.Any(z => (z.Key == eachClass.ID))).ToList();