使用LINQ (removeAll)从列表中删除项
本文关键字:列表 删除 LINQ removeAll 使用 | 更新日期: 2023-09-27 18:09:08
我有两个对象列表,我一直在学习如何从一个列表中删除出现在另一个列表中的项。
我想到了这个:
result.ResultantPoliciesTable.RemoveAll(item => result.PoliciesTable.Select
(f => f.PolicyName).Contains(item.PolicyName));
这可以工作,但是如果ResultantPoliciesTable
中称为ManagementID
的对象的整数属性等于我将提供的值,那么我不希望该对象被删除。
谁能帮我扩展这个查询来实现这一点?
尝试如下:
int doNotRemoveID = 7862384732;
result.ResultantPoliciesTable.RemoveAll(
item => item.ManagementID != doNotRemoveID &&
result.PoliciesTable.Select(f => f.PolicyName).Contains(item.PolicyName));
变量item
将被ResultantPoliciesTable
中的每条记录填充,如果结果方法返回true
,它将被删除。因此,添加检查以查看是否需要排除item.ManagementID
应该足以满足您的需求。
result.ResultantPoliciesTable
.RemoveAll(item =>
result.PoliciesTable
.Where(i => i.ManagementID!=myId)
.Select(f => f.PolicyName)
.Contains(item.PolicyName)
);