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

时间:2011-11-29 21:14:04

标签: c# linq entity-framework entity-framework-4

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:5)

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

其中tableAtableB是ID列表。

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