Linq .GroupBy()与计数 [英] Linq .GroupBy() with count

查看:155
本文介绍了Linq .GroupBy()与计数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个表需要在报告中进行总结.这是我的示例表.

I have a table that I need to summarize in a report. This is my sample table.

                Orders
_____________________________________
CustomerId | CustomerName | OrderType 
___________|______________|__________ 
1          |     Adam     | Shoe
1          |     Adam     | Shoe
1          |     Adam     | Shoe
1          |     Adam     | Hat
1          |     Adam     | Hat
2          |     Bill     | Shoe
2          |     Bill     | Hat
3          |     Carl     | Sock
3          |     Carl     | Hat

我正在尝试对此进行总结,以无循环地传回我的视图模型.这是我试图实现的结果.

I am trying to summarize this to pass back in my viewmodel without a loop. This is the result that I am attempting to achieve.

CustomerName | Shoe | Hat | Sock | Total Orders
------------ | ---- | --- | ---- | ------------
Adam         |   3  |  2  |  0   |      5
Bill         |   1  |  1  |  0   |      2
Carl         |   0  |  1  |  1   |      2

//var resultList = dbContext.Orders.OrderBy(o => o.CustomerId);

如何使用GroupBy和Count来获得所需的结果?那是最好的方法吗?

How can I use GroupBy and Count to achieve my desired results? Would that be the best approach to take?

推荐答案

group子句(C#参考)

var summary = from order in dbContext.Orders
              group order by order.CustomerId into g
              select new { 
                  CustomerName = g.First().CustomerName , 
                  Shoe = g.Count(s => s.OrderType == "Shoe"),
                  Hat = g.Count(s => s.OrderType == "Hat"),
                  Sock = g.Count(s => s.OrderType == "Sock"),
                  TotalOrders = g.Count()
              };

这篇关于Linq .GroupBy()与计数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆