2010-10-12 63 views
19

我有2个清单:同时存在于两个列表LINQ的选择项

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

是否有使用LINQ拉只在第一个列表中存在的第二个列表,这样我留下的物件的方式:

{object2, object3} 

我看着相交,但它似乎只有在两个列表都是相同类型时才起作用。

任何帮助将不胜感激。

谢谢。

回答

27

LINQ解决方案:

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

@李:应该有一个变量名。 'IEnumerable “variablename”= ......'。请编辑 – 2010-10-12 10:23:00

相关问题