刚刚开始使用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)
......但那不对.谁能指出我正确的方向?
这是正确的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 - 这是一个很棒的工具.您只需将其指向您的数据库即可关闭并运行.不仅包括数百个样本,而且您可以针对包含的实时数据库运行它们.从提供的样本开始,我几分钟就能得出上述查询.
在这里你可以找到很多关于使用聚合函数和分组的例子,另外我非常推荐你使用LinqPad,它是一个很好的工具来测试你的查询,这是学习LINQ的好方法,它预装了200个例子.