Допустим, у меня есть это SQL:LINQ - Left Join, Group By, и граф
SELECT p.ParentId, COUNT(c.ChildId)
FROM ParentTable p
LEFT OUTER JOIN ChildTable c ON p.ParentId = c.ChildParentId
GROUP BY p.ParentId
Как я могу перевести это в LINQ к SQL? Я застрял в COUNT (c.ChildId), сгенерированный SQL всегда выводит COUNT (*). Вот что я получил до сих пор:
from p in context.ParentTable
join c in context.ChildTable on p.ParentId equals c.ChildParentId into j1
from j2 in j1.DefaultIfEmpty()
group j2 by p.ParentId into grouped
select new { ParentId = grouped.Key, Count = grouped.Count() }
Спасибо!
ОК, это работает, но почему? Как вы думаете, через это? Как не считать нулевые значения дают нам то же самое, что и COUNT (c.ChildId)? Благодарю. – pbz
Так работает SQL. COUNT (имя поля) будет считать строки в этом поле, которые не равны нулю. Может быть, я не получу ваш вопрос, пожалуйста, уточните, так ли это. –
Думаю, я всегда думал об этом с точки зрения подсчета строк, но вы правы, подсчитываются только ненулевые значения. Благодарю. – pbz