2010-10-12 4 views
19

I ont 2 liste:Linq éléments de sélection qui existent dans les deux liste

myObject object1 = new myObject(id = 1, title = "object1"}; 
myObject object2 = new myObject(id = 2, title = "object2"}; 
myObject object3 = new myObject(id = 3, title = "object3"}; 

//List 1 
List<myObject> myObjectList = new List<myObject>{object1, object2, object3}; 

//List 2 
List<int> idList = new List<int>{2, 3}; 

est-il un moyen LINQ pour tirer uniquement les objets dans la première liste qui existent dans la deuxième liste de sorte que je suis parti avec :

{object2, object3} 

J'ai regardé l'intersection mais il semble que cela ne fonctionnera que si les deux listes sont du même type.

Toute aide serait grandement appréciée.

Merci.

Répondre

27

LINQ Solution:

myObjectList = myObjectList.Where(X => idList.Contains(X.id)).ToList(); 
13
IEnumerable<myObject> matches = myObjectList.Join(
    idList, 
    o => o.Id, 
    id => id, 
    (o, id) => o); 
+1

@ Lee: Il devrait y avoir un nom de variable. 'IEnumerable " variablename "= ......'. S'il vous plaît modifier –

Questions connexes