我正在寻找将此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