我有 2 个不同对象的列表,例如列表和列表。我想删除第一个列表中字段值与第二个列表中字段值不匹配的所有对象。
例如,我想从第一个列表中删除所有 Type1 对象,其 Type1.name(字符串)成员与第二个列表中的 Type2.id(字符串)成员不匹配。
这可以用 LINQ 实现吗?
最佳答案
LINQ 与修改现有 集合无关——它与运行查询有关。如果您需要就地更改列表,您可能需要这样的东西:
HashSet<string> ids = new HashSet<string>(list2.Select(x => x.Id));
list1.RemoveAll(x => !ids.Contains(x.Name));
在“正常”的 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();
关于c# - LINQ 根据字段从一个集合中删除与另一个集合中的元素不匹配的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7552731/