DefaultIfEmpty возвращает пустые строки
Я пытался выполнить выражение типа Left Join в LINQ to Entities, однако метод DefaultIfEmpty работает иначе, чем я ожидал - он возвращает пустую строку для каждого CounterNo, для которого нет совпадений в таблице Readings.
var leftjoin = from counter in database.Counters
join reading in database.Readings
on counter.CounterNo equals reading.CounterNo into gj
from x in gj.DefaultIfEmpty()
select x;
Таким образом, я не знаю, какие строки из таблицы Counters не имеют соответствующей строки в таблице Readings.
Как мне сделать эту работу?
1 ответ
Решение
Похоже, вы просто не хотите добавлять в from x in gj.DefaultIfEmpty()
и вместо этого вы хотите, чтобы каждый элемент в левой таблице был в паре с группой элементов в правой таблице (эта группа может иметь ноль элементов, как вы знаете, когда нет подходящих элементов), и это именно то поведение, которое вы получаете когда вы удалите эту строку.