我有两个对象列表,我一直在学习如何从一个列表中删除项目,如果它们出现在另一个列表中。
我想出了这个:
result.ResultantPoliciesTable.RemoveAll(item => result.PoliciesTable.Select
(f => f.PolicyName).Contains(item.PolicyName));
这样可行,但如果ResultantPoliciesTable
中ManagementID
的对象的整数属性等于我将提供的值,那么我不希望删除此对象。
任何人都可以帮我扩展此查询来实现这一目标吗?
答案 0 :(得分:3)
尝试以下方法:
int doNotRemoveID = 7862384732;
result.ResultantPoliciesTable.RemoveAll(
item => item.ManagementID != doNotRemoveID &&
result.PoliciesTable.Select(f => f.PolicyName).Contains(item.PolicyName));
变量item
将填充ResultantPoliciesTable
中的每条记录,如果您的结果方法返回true
,则会将其删除。因此,添加一项检查以确定是否需要排除item.ManagementID
应该足以满足您的需求。
答案 1 :(得分:0)
result.ResultantPoliciesTable
.RemoveAll(item =>
result.PoliciesTable
.Where(i => i.ManagementID!=myId)
.Select(f => f.PolicyName)
.Contains(item.PolicyName)
);