c# lambda 使用 GROUP BY 和 SUM 读取每一行

c# lambda reading each row with GROUP BY and SUM

这是我在我的管理工作室中使用的工作查询。

SELECT TOP 5 productCode, SUM(productSales) AS sales
FROM     sellingLog
WHERE  (salesYear = '2014')
GROUP BY productCode
ORDER BY sales DESC

我想将上面的查询转换为 lambda,但我似乎无法让它工作。 lambda 仍然缺少 order by 和 select productCode

var topProducts = sellingLog
       .Where(s => s.salesYear == 2014)
       .GroupBy(u => u.productCode)
       .Select(b => b.Sum(u => u.productSales)).Take(5)
       .ToList();

foreach(var v in topProduct)
{
   //reading 'productCode' and 'sales' from each row
}
var topProducts = sellingLog
       .Where(s => s.salesYear == 2014)
       .GroupBy(u => u.productCode)
       .Select(g => new { productCode = g.Key, sales = g.Sum(u => u.productSales) })
       .OrderByDescending(x => x.productCode)
       .Take(5)
       .ToList();

您可以使用 .Key 和 group by 得到 productCode

var topProducts = sellingLog
   .Where(s => s.salesYear == 2014)
   .GroupBy(u => u.productCode)
   .Select(b => new {u.Key, b.Sum(u => u.productSales)}).Take(5)
   .OrderByDescending(b=>b.Sales) 
   .ToList();