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()и вместо этого вы хотите, чтобы каждый элемент в левой таблице был в паре с группой элементов в правой таблице (эта группа может иметь ноль элементов, как вы знаете, когда нет подходящих элементов), и это именно то поведение, которое вы получаете когда вы удалите эту строку.

Другие вопросы по тегам