Как добиться левого, исключая JOIN, используя LINQ? - PullRequest
20 голосов
/ 12 июля 2011

Как добиться левого, исключая JOIN, используя LINQ?

В SQL :

SELECT <select_list> 
FROM Table_A A
LEFT JOIN Table_B B
ON A.Key = B.Key
WHERE B.Key IS NULL

Ответы [ 3 ]

22 голосов
/ 12 июля 2011

Вам необходимо DefaultIfEmpty() для LEFT JOIN, тогда вы можете проверить, является ли объединенное значение null:

var result = from a in Table_A
             join b in Table_B on a.Key equals b.Key into j
             from b in j.DefaultIfEmpty()
             where b == null
             select new { ... };
12 голосов
/ 12 июля 2011

Проще было бы написать так:

var result = from a in Table_A
             where !Table_B.Any(b => b.Key == a.key)
             select new { ... };
1 голос
/ 15 апреля 2017

Еще более быстрый способ

var result = from a in Table_A
    where !Table_B.Select(b => b.Key).Contains(a.Key)
    select new { ... };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...