2011-11-29 35 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

相关问题