2011-11-29 33 views
4

我有兩個數據庫表,它們表示屬於父實體的項目列表。比較兩個集合並添加/刪除一個以使它們匹配

我需要定期更新B表匹配表A中

使用LINQ,我得到的ID的集合表A

我現在需要添加和B表中刪除行,使它與A.

什麼是使用linq和EF 4.1完成此操作的最有效方法?

我可以循環訪問A集合,並在此循環中循環遍歷B,檢查與外部循環中當前項目匹配的記錄,如果找不到匹配項,則添加新項目......但它看起來像然後,我需要再次循環B以移除不在A中的任何項目。這看起來效率低下。我錯過了什麼嗎?

回答

4
var toRemove = tableB.Except(tableA); 
var toAdd = tableA.Except(tableB); 

其中tableAtableB是ID列表。

然後,通過兩個結果列表並執行必要的操作,最簡單的方法就是foreach()

+0

所以爲了確保我有這個權利。我將通過B循環並刪除toRemove列表中的所有項目並添加toAdd列表中的所有內容? – stephen776

+0

是的,那樣做。你很幸運,沒有改變記錄。 –

+0

謝謝! nope只需要添加和設置激活/非激活標誌。 – stephen776

相關問題