【发布时间】:2017-09-23 03:06:26
【问题描述】:
我有以下查询,它连接了由 StationId 连接的 RailwayStation 对象和 ExpenditureData 对象的集合,我试图获取前 10 个 StationCargoCodes(Station 对象上的属性),并选择 ExpenditureCost 的总和作为顶部10 但我无法获得正确的语法:
var data = (from s in stations join e in expenditureData on s.stationId
equals e.StationId
orderby e.expenditureAmount descending
select s)
.Sum(e => e.expenditureAmount)
.GroupBy(n => n.StationCargoCode)
.Take(10);
我需要什么 LINQ 来为此进行分组和求和?
【问题讨论】:
-
不应该是
.Sum(e => e.expenditureAmount)吗? -
总和是减少。它将返回一个金额并终止查询。可以将查询的公共部分封装成一个方法,然后分别调用.Sum和(GroupBy->Take)
-
第二张海报是对的,你不能对 sum 的结果进行分组,那将是一个标量值。
-
好吧,我很困惑。您是否需要前 10 个代码和前 10 个代码条目的总和?或者只是总和。
-
顺便说一句,您可以在查询msdn.microsoft.com/en-us/library/bb384063.aspx中使用组子句