2013-04-15 124 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) 
       );