2013-08-31 115 views
0

假設我有2個類別:如何使用linq從第二個集合中刪除出現在第一個集合中的每個項目?

1){1, 2, 3, 5}
2){2, 5}

我想刪除出現在第二收集來自第一集合中的每個項目,所以我將獲得:

{1, 3} 

問題:

  1. 我該怎麼做Join OP(更好的擴展方法語法)?
  2. 有沒有什麼辦法可以迭代兩個集合,就像我使用嵌套for/foreach循環一樣?

編輯:
遍歷兩個集合同時您可以使用嵌套from條款:

from boy in boys 
from girl in girls 
select boy + "+" + girl 

我第一次發現有必要這個語法:)

+1

爲什麼加入?它根本不需要'Join' :) –

+0

任何想法如何同時迭代兩個集合?不是在當前問題的背景下,但我只是想知道,因爲在許多情況下,我需要此功能 –

+0

比較每個項目從第一個集合與第二個colleciton項目 –

回答

5

這確實你需要什麼

var solution = list1.Except(list2); 

您可以找到有關除了here更多的細節,但其基本思想是:

此方法返回的第一個未出現在 第二的元素。它也不會返回那些第一個不出現 的元素。

+0

我是個傻瓜)忘記了這個方法)謝謝! –

+0

我會接受你的答案,因爲它是第一次。 BTW ToList方法將執行大部分時間不需要的查詢 –

+0

如果這不是您想要的數據被返回,我將刪除ToList: – Save

2

簡單。使用Except

var newList = list1.Except(list2).ToList(); 
相關問題