Сравните две коллекции и добавьте / удалите одну, чтобы они совпали - PullRequest
5 голосов
/ 30 ноября 2011

У меня есть две таблицы базы данных, которые представляют списки элементов, принадлежащих родительским объектам.

Мне нужно периодически обновлять таблицу B, чтобы она соответствовала таблице A

используя linq, я получаю коллекцию идентификаторов в таблице A.

Теперь мне нужно добавить и удалить строки из таблицы B, чтобы она соответствовала A.

Какой самый эффективный способ сделать это, используя linq и EF 4.1?

Я могу перебрать коллекцию A и в этом цикле перебрать B, проверяя наличие записи, соответствующей текущему элементу во внешнем цикле, добавляя новый элемент, если совпадение не найдено ... однако кажется, что я Затем нужно будет повторить цикл B во второй раз, чтобы удалить все элементы, которые не находятся в A. Это кажется неэффективным. Я что-то упустил?

1 Ответ

5 голосов
/ 30 ноября 2011
var toRemove = tableB.Except(tableA);
var toAdd = tableA.Except(tableB);

, где tableA и tableB - списки идентификаторов.

И тогда проще всего foreach() просмотреть оба списка результатов и выполнить необходимые действия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...