2012-02-09 33 views
0

我对LINQ很陌生,我已经搜索过了,但没有其他q/a提供了完整的样本。我需要LINQ查询强类型IList<>对象,我必须:Linq的总和,订单,组和顶部/收入

  1. 总和属性
  2. 集团由物业
  3. 订购我也心安
  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 

什么是解决这个问题的最好方法?

回答

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); 
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);