我有两个数据库表,表示属于父实体的项目列表。
我需要定期更新表B以匹配表A
使用linq,我得到了表A中的ID集合。
我现在需要在表B中添加和删除行,使其与A匹配。
使用linq和EF 4.1实现此目的的最有效方法是什么?
我可以遍历A集合,并在此循环中循环通过B检查与外部循环中的当前项匹配的记录,如果未找到匹配则添加新项...但是它似乎我然后需要第二次循环B以删除任何不在A中的项目。这似乎效率低下。我错过了什么吗?
答案 0 :(得分:5)
var toRemove = tableB.Except(tableA);
var toAdd = tableA.Except(tableB);
其中tableA
和tableB
是ID列表。
然后foreach()
通过两个结果列表并执行必要的操作最简单。