比较两个集合并从一个集合添加/删除以使它们匹配

ste*_*776 5 c# linq entity-framework entity-framework-4

我有两个数据库表,表示属于父实体的项目列表.

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

使用linq,我得到了表A中ID的集合.

我现在需要在表B中添加和删除行以使其与A匹配.

使用linq和EF 4.1实现此目的的最有效方法是什么?

我可以循环遍历A集合,并在此循环中循环通过B检查与外部循环中的当前项匹配的记录,如果未找到匹配则添加新项...但是看起来我似乎需要第二次循环B以删除任何不在A中的项目.这似乎效率低下.我错过了什么吗?

Hen*_*man 5

var toRemove = tableB.Except(tableA);
var toAdd = tableA.Except(tableB);
Run Code Online (Sandbox Code Playgroud)

其中tableAtableB是ID列表.

然后最简单的方法是通过foreach()两个结果列表并执行必要的操作.