从其他列表中删除对象列表

Dan*_*-SP 7 c# linq c#-3.0 c#-4.0

我一直在寻找类似的东西.我正在尝试根据列表B从更大的列表A中删除所有元素.

假设我得到一个包含100个不同IDS元素的通用列表,我得到另一个包含10条记录的特定元素的列表.我需要从第一个列表中删除第二个列表中不存在的所有元素.

我将尝试显示我实际上不知道它是如何工作的代码.

List<Obj> listA = new List<Obj>(); 
List<Obj> listB = new List<Obj>(); 

//here I load my first list with many elements
//here I load my second list with some specific elements

listA.RemoveAll(x => !listB.Contains(x));
Run Code Online (Sandbox Code Playgroud)

我不知道为什么,但它不起作用.如果我用一个List<int>类型尝试这个例子,它可以很好地工作,但我想用我的对象做到这一点.这个对象有一个ID,但我不知道如何在LINQ语句中使用这个ID.

Joe*_*Joe 24

您需要比较ID:

listA.RemoveAll(x => !listB.Any(y => y.ID == x.ID));
Run Code Online (Sandbox Code Playgroud)

列表(T).RemoveAll