Ric*_*bob 1 c# linq collections
我有2个不同对象的列表,例如列表和列表.我想删除第一个列表中的所有对象,其中字段的值与第二个列表中的字段值不匹配.
例如,我想从第一个列表中删除所有Type1对象,其中Type1.name(string)成员与第二个列表中的Type2.id(字符串)成员不匹配.
LINQ可以实现吗?
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)