使用LINQ to Entities我無法在給定父ID的列表的情況下計算子對象的數量。以下是我會做它直接的SQL:LINQ實體框架4 SELECT COUNT LEFT OUTER JOIN IN GROUP BY
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一直試圖實體:
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的計數。
你有一個「導航屬性」爲你的'父'實體,就像'兒童'屬性? – Jacob
沒有。這個項目是一個「數據優先」的設置,並沒有一個正式的sql外鍵關係設置。我們從來沒有在db上設置外鍵,因爲我們知道有孤兒,我們無法從子表中刪除 –
看起來像答案可能在這裏:http://stackoverflow.com/questions/695506/linq-left-join -group-by-and-count?rq = 1現在就試試吧...... –