Проблема левого внешнего соединения

Мне нужно преобразовать некоторый оператор SQL в LINQ. Как преобразовать LEFT OUTER JOIN в эквивалентную инструкцию LINQ?

Ответы

Ответ 1

Вам нужно использовать оператор DefaultIfEmpty. Приведенный ниже код должен привести к левому внешнему соединению.

var q = from c in customers
            join o in orders on c.Key equals o.Key into g
            from o in g.DefaultIfEmpty()
            select new {Name = c.Name, OrderNumber = o == null ? "(no orders)" :     o.OrderNumber};

Кредит: http://www.hookedonlinq.com/OuterJoinSample.ashx