linq中order by 和group by (含lambda表达式实现)以及综合案例
Posted yaphetsfang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linq中order by 和group by (含lambda表达式实现)以及综合案例相关的知识,希望对你有一定的参考价值。
3.linq group by(多列)
1.简单的实现方式:
var list = from T in Transactions group T by T.ZhiFuQuDao into g select g;
语句描述:Linq使用Group By 统计交易流水的支付渠道方式(支付宝或微信等等)。
说明:这里将查询结果 命名为g,一旦重新命名,T 的作用域就结束了,所以,最后select时,只能select g。
2.分类统计各个分类的最大值(Max)、最小值(Min)、平均值(Average)和求和(Sum)
var q = from T in Transactions group T by T.ZhiFuQuDao into g select new { g.Key, MaxPrice = g.Max(T => T.Moneys) };
语句描述:Linq使用Group By和Max查找交易流水每种支付渠道的最高金额的一笔交易。
说明:先按ZhiFuQuDao进行分类,然后获取每个分类的最高一笔交易金额赋给MaxPrice。最小值、平均值和求和实现和此类似,替换关键之即可
3.多列(Multiple Columns)
var dateQDList = from T in hisDZD group T by new { T.JiaoYiRQ, T.JiaoYiQDMC } into g select new { g.Key.JiaoYiRQ, g.Key.JiaoYiQDMC };
语句描述:Linq使用Group By按交易日期和交易渠名称将his对账单进行分组统计。
效果图如下:
4. lambda group by(多列带表达式)
var dateQDList = hisDZD.GroupBy(t => new
{
JiaoYiRQ=Convert.ToDateTime(t.JiaoYiRQ).ToString("yyyy-MM-dd"),
t.JiaoYiQDMC
}) .Select(g=>new {
JiaoYiRQ = Convert.ToDateTime(g.Key.JiaoYiRQ).ToString("yyyy-MM-dd"),
JiaoYiQDMC = g.Key.JiaoYiQDMC
}).ToList();
语句描述:Linq使用Group By按交易日期和交易渠名称将his对账单进行分组统计。
效果:同上
说了这么多不知道大家有没有理解和使用呢
最后留两道题给大家,看大家是否能学以致用
1:给“cdabe” 排序;
2:给"ABCCD,CDA,BCDD,DCA,ADC,BCD,CDCAB"将含有相同字母的进行分组并排序。
以上是关于linq中order by 和group by (含lambda表达式实现)以及综合案例的主要内容,如果未能解决你的问题,请参考以下文章
LINQ to SQL 实现 GROUP BY聚合ORDER BY