ПОЗДНО ОТВЕТ:
Вам вообще не нужно левое соединение , если все, что вы делаете - это Count (). Обратите внимание, что join...into
на самом деле переводится в GroupJoin
, который возвращает группировки, такие как new{parent,IEnumerable<child>}
, поэтому вам просто нужно вызвать Count()
для группы:
from p in context.ParentTable
join c in context.ChildTable on p.ParentId equals c.ChildParentId into g
select new { ParentId = p.Id, Count = g.Count() }
В синтаксисе метода расширения значение join into
эквивалентно GroupJoin
(тогда как значение join
без into
равно Join
):
context.ParentTable
.GroupJoin(
inner: context.ChildTable
outerKeySelector: parent => parent.ParentId,
innerKeySelector: child => child.ParentId,
resultSelector: (parent, children) => new { parent.Id, Count = children.Count() }
);