0

我对 LINQ 很陌生,我已经搜索了这些板,但其他 q/a 都没有提供完整的示例。我需要使用 LINQ 查询强类型IList<>对象,并且必须:

  1. 按属性求和
  2. 按属性分组
  3. 按我进行 Sum 的同一属性订购
  4. 将结果限制在前 2 位

例如,如果我的数据是这样的:

 Id  |  Customer  |  CartTotal
-------------------------------
 1   |      a     |     100 
 2   |      a     |     50
 3   |      b     |     110
 4   |      b     |     128
 5   |      c     |     75
 6   |      c     |     30

我的结果需要像这样,我将它限制在前 2 位,按客户分组,并在 CartTotal 上进行了总和:

Customer  |  CartTotal
----------------------
    b     |     238 
    a     |     150

实现这一目标的最佳方法是什么?

4

2 回答 2

1

这都是将正确的扩展方法链接在一起的问题。我们想首先按客户分组GroupBy--然后对于每个组项目到客户和购物车总数- Select,按购物车总数降序排列-OrderByDescending最后取前2名- Take

var results = customerOrders.GroupBy(c=> c.Customer)
                            .Select(g=> new 
                             { 
                               Customer = g.Key, 
                               CartTotal = g.Sum(x=>x.CartTotal) 
                             })
                            .OrderByDescending(x=> x.CartTotal)
                            .Take(2);
于 2012-02-09T02:30:55.060 回答
1
var query = carts.GroupBy(c => c.Customer)
                 .Select(g => new { Customer = g.Key, Total = g.Sum(p => p.CartTotal)})
                 .OrderByDescending(c => c.Total)
                 .Take(2);
于 2012-02-09T02:35:08.683 回答