使用 LINQ to Entities 在给定父 ID 列表的情况下,我无法获取子对象的计数。这是我在直接 SQL 中的做法:
SELECT COUNT(Child.ParentId) ,Parent.Parentd
FROM Parent
LEFT OUTER JOIN Child ON Child.ParentId = Parent.ParentId
WHERE
Parent.ParentId IN (
8417
,118458
,120567
,121596
)
GROUP BY Parent.ParentId
这是我在 LINQ to Entities 中尝试过的:
var counts = from Parent in context.Parents
join Child in context.Children on Parent.ParentId equals Child.ParentId
into children
from jn in children.DefaultIfEmpty()
where iEnumerableParentIds.Contains(parent.parentId)
group parent by parent.parentId
into g
select new {count = g.Count(), parentId = g.Key};
这非常接近,但我计算的是分组的父级而不是子级,当父级没有子级时,我的计数为 1。