我正在尋找將此SQL語句翻譯成良好工作的&高性能LINQ命令。我設法使用分組計數和關鍵成員來處理第一個計數,但不知道如何獲得第二個計數。Linq,雙左連接和雙重計數
select main.title, count(details.id) as details, count(messages.id) as messages
from main
left outer join details on main.id = details.mainid
left outer join messages on details.id = messages.detailid
group by main.title
這是我到目前爲止已經完成:
from main in Main
join detail in Details on main.Id equals detail.MainId into j1
from subdetail in j1.DefaultIfEmpty()
group main by main.Title into g
select new { Title = g.Key, Details = g.Count() }
任何意見是值得歡迎的!
編輯:24/03/2010 09.41
這個查詢:
from main in Main
join detail in Details on main.Id equals detail.MainId into j1
from subdetail in j1.DefaultIfEmpty()
join message in Messages on subdetail.Id equals message.DetailId into j2
group main by main.Title into g
select new { Title = g.Key, Details = g.Count() }
生成此SQL語句:
SELECT COUNT(*) AS [Detail], [t0].[Title]
FROM [Main] AS [t0]
LEFT OUTER JOIN [Detail] AS [t1] ON [t0].[Id] = [t1].[MainId]
LEFT OUTER JOIN [Messages] AS [t2] ON [t1].[Id] = [t2].[DetailId]
GROUP BY [t0].[Title]
所以,我幾乎做到了!
Fabian
你可以發佈你迄今爲止做了什麼嗎? – 2010-03-23 21:20:03
已添加。事實是,我正在計算多少標題分組,而不是我有多少細節。我仍在搜索;-) – 2010-03-24 08:22:16