我想知道是否有人可以帮助我。我想在VB.Net中使用LINQ复制以下SQL查询。我对如何进行子查询/聚合有点不清楚。
由于
SELECT *
FROM Server S
INNER JOIN ServerHDD H
ON S.Server_ID = H.Server_ID
INNER JOIN (SELECT MAX(ServerHDD_ID) AS ServerHDD_ID
FROM ServerHDD
GROUP BY Server_ID, Letter) Filter
ON H.ServerHDD_ID = Filter.ServerHDD_ID
ORDER BY S.Hostname, H.Letter
在C#=>中得到如下所示需要VB.Net转换。
from S in SERVER
join H in SERVERHDD on S.Server_ID equals H.Server_ID
join FILTER in
(from s in SERVERHDD group s
by new {s.Server_ID, s.Letter}
into groupedServerHDD select new
{
SERVERHDD_ID = groupedServer.Sum(gS=>gS.ServerHDD_ID)
}
)
on H.ServerHDD_ID equals FILTER.SERVERHDD_ID
orderby S.Hostname, H.Letter
select S
答案 0 :(得分:0)
答案 1 :(得分:0)
这是我最喜欢的关于此主题的页面。我喜欢LINQ to SQL(希望他们打算继续通过实体框架支持它......)http://msdn.microsoft.com/en-us/vbasic/bb688085.aspx。在此页面上,您将找到查询需求的所有答案。在没有测试它的情况下很难在这里格式化查询!
你的内部联接随着LtS的简单连接语法而消失。您可以在内部选择上说.Max()或在这里使用Max(伪functoid):
From p2 In g _
Where p2.UnitPrice = g.Max(Function(p3) p3.UnitPrice) _
Select p2