【发布时间】:2013-06-29 14:32:36
【问题描述】:
使用 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。
【问题讨论】:
-
您的
Parent实体是否有“导航属性”,例如Children属性? -
没有。这个项目是一个“数据优先”的设置,没有正式的 sql 外键关系设置。我们从未在数据库上设置外键,因为我们知道存在无法从子表中消除的孤儿
-
看起来答案可能就在这里:stackoverflow.com/questions/695506/…现在试试...
-
旧问题的答案有效
标签: linq entity-framework