LINQ - 左結合、グループ化、カウント 質問する

LINQ - 左結合、グループ化、カウント 質問する

次のような SQL があるとします。

SELECT p.ParentId, COUNT(c.ChildId)
FROM ParentTable p
  LEFT OUTER JOIN ChildTable c ON p.ParentId = c.ChildParentId
GROUP BY p.ParentId

これを LINQ to 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() }

ありがとう!

ベストアンサー1

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(t=>t.ChildId != null) }

おすすめ記事