LINQ从一个集合中删除与基于字段的另一个集合中的元素不匹配的元素

Ric*_*bob 1 c# linq collections

我有2个不同对象的列表,例如列表和列表.我想删除第一个列表中的所有对象,其中字段的值与第二个列表中的字段值不匹配.
例如,我想从第一个列表中删除所有Type1对象,其中Type1.name(string)成员与第二个列表中的Type2.id(字符串)成员不匹配.
LINQ可以实现吗?

Jon*_*eet 5

LINQ不是要修改现有的集合 - 它是关于运行查询.如果您需要更改列表,可能需要以下内容:

HashSet<string> ids = new HashSet<string>(list2.Select(x => x.Id));
list1.RemoveAll(x => !ids.Contains(x.Name));
Run Code Online (Sandbox Code Playgroud)

在"普通"LINQ中你可以这样做:

// I'm assuming no duplicate IDs in list2 
var query = (from x in list1
             join y in list2 on x.Name equals y.Id
             select x).ToList();
Run Code Online (Sandbox Code Playgroud)