выбор строк из одной таблицы, которых нет в другой таблице, с помощью linq - PullRequest
1 голос
/ 19 апреля 2011

У меня есть таблица с именами людей, которых следует отправить по электронной почте. Когда им по электронной почте, запись добавляется в другую таблицу, что они были уведомлены. Мне нужно написать запрос linq, который возвращает все записи в первой таблице, которых нет в уведомленной таблице. Кто-нибудь знает, как это сделать? Спасибо.

Ответы [ 2 ]

1 голос
/ 19 апреля 2011

В псевдокоде это то, что вы должны сделать (левое соединение):

        List<int?> listA = new List<int?>() { 1, 2, 3, 4, 5, 6, 7 };
        List<int?> listB = new List<int?>() { 1, 2, 3, 4, 5 };

        var result = (from a in listA
                      join b in listB on a equals b into subset
                      from c in subset.DefaultIfEmpty()
                      where !c.HasValue
                      select a).ToList();

при этом будет получен список значений, равный 6 и 7.

Вы должны смотреть на значения здесь, как если бы они были PK и FK в ваших таблицах.

0 голосов
/ 19 апреля 2011

Как насчет внешнего объединения, где результаты из второй таблицы равны нулю?

Это из http://www.hookedonlinq.com/OuterJoinSample.ashx с незначительным изменением, включающим только те записи без соответствующих записей:

string[] words = {"walking","walked","bouncing","bounced","bounce","talked","running"};
string[] suffixes = {"ing","ed","er","iest"};

var pairs = from word in words 
            from suffix in (from suffix in suffixes where word.EndsWith(suffix) select suffix).DefaultIfEmpty() 
            where String.IsNullOrEmpty(suffix)
            select new {word, suffix};

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