2013-04-15 97 views
0

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

我想出了这一点:

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

这工作,但如果在ResultantPoliciesTable称为ManagementID对象的整数属性等于值我会提供当时我不想被删除该对象。

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

回答

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应该足以满足您的需求。

+0

这没有给我想要的结果,但欢呼 – DavidB

+0

请说出什么是不按预期工作? –

+0

现在没有结果被移除 – DavidB

0
result.ResultantPoliciesTable 
     .RemoveAll(item => 
         result.PoliciesTable 
          .Where(i => i.ManagementID!=myId) 
          .Select(f => f.PolicyName) 
          .Contains(item.PolicyName) 
       );