Как достичь Left Исключая JOIN с помощью LINQ?
Как достичь Left Исключая 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
Ответы
Ответ 1
Для LEFT JOIN
вам понадобится DefaultIfEmpty()
, тогда вы можете проверить, есть ли объединенное значение 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 { ... };
Ответ 2
Легче было бы написать вот так:
var result = from a in Table_A
where !Table_B.Any(b => b.Key == a.key)
select new { ... };
Ответ 3
Еще более быстрый способ
var result = from a in Table_A
where !Table_B.Select(b => b.Key).Contains(a.Key)
select new { ... };