Linq to SQL中的Sum和Group By?

时间:2008-10-19 15:12:41

标签: vb.net linq-to-sql

刚开始使用Linq to SQL,请原谅新手问题。我正在尝试在Linq to SQL(VB.NET)中重现以下(工作)查询:

Select
    f.Title,
    TotalArea = Sum(c.Area)
From Firms f
Left Join Concessions c on c.FirmID = f.FirmID
Group By f.Title
Order by Sum(c.Area) DESC

(一家公司有很多特许权;特许经营权的面积是公顷。我想要一份公司清单,从那些拥有所有特许权总面积最大的公司开始。)

我正在想象像Linq to SQL等价的东西(伪代码

From f As Firm In Db.Firms _
Order By f.Concessions.Sum(Area)

......但那不对。有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:28)

答案

这是正确的Linq to SQL等价物

From c In Concessions _
Join f In Firms on f.FirmID equals c.FirmID _
Group by f.Title _
Into TotalArea = sum(c.OfficialArea)  _
Order by TotalArea Descending _
Select Title, TotalArea

感谢@CMS指点我LinqPad - 这是一个很棒的工具。您只需将其指向您的数据库即可关闭并运行。不仅包括数百个样本,而且您可以针对包含的实时数据库运行它们。从提供的样本开始,我能够在几分钟内得出上述查询。

答案 1 :(得分:6)

Here你可以找到很多关于使用聚合函数和分组的例子,另外我非常推荐你LinqPad,这是一个很好的工具来动态测试你的查询,这是学习的好方法LINQ,它预装了200个例子。