使用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的对象的整数属性等于我将提供的值,那么我不希望该对象被删除。

谁能帮我扩展这个查询来实现这一点?

使用LINQ (removeAll)从列表中删除项

尝试如下:

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)
                );