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

时间:2013-04-15 11:11:56

标签: c# linq-to-entities

我有两个对象列表,我一直在学习如何从一个列表中删除项目,如果它们出现在另一个列表中。

我想出了这个:

result.ResultantPoliciesTable.RemoveAll(item => result.PoliciesTable.Select
(f => f.PolicyName).Contains(item.PolicyName));

这样可行,但如果ResultantPoliciesTableManagementID的对象的整数属性等于我将提供的值,那么我不希望删除此对象。

任何人都可以帮我扩展此查询来实现这一目标吗?

2 个答案:

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