我是LINQ的新手,我已经搜索了主板,但其他q / a都没有给出完整的样本。我需要使用LINQ查询强类型IList<>
对象,我必须:
例如,如果我的数据是这样的:
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
实现这一目标的最佳方式是什么?
答案 0 :(得分: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 :(得分: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);