2010-10-12 12 views
19

tengo 2 lista:Linq elementos de selección que existen tanto en la lista

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}; 

¿Hay alguna manera el uso de LINQ para tirar sólo los objetos en la primera lista que hay en la segunda lista, de modo que no me queda :

{object2, object3} 

Miré a intersect pero parece que esto solo funcionará si ambas listas son del mismo tipo.

Cualquier ayuda sería muy apreciada.

Gracias.

Respuesta

27

LINQ Solución:

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: No debe ser un nombre de variable. 'IEnumerable " nombre de variable "= ......'. Por favor edita –

Cuestiones relacionadas