前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >linq中order by 和group by (含lambda表达式实现)以及综合案例

linq中order by 和group by (含lambda表达式实现)以及综合案例

作者头像
yaphetsfang
发布2020-07-30 10:03:07
3.3K0
发布2020-07-30 10:03:07
举报
文章被收录于专栏:yaphetsfangyaphetsfang

一、Linq应用场景

linq的语法通过System.Linq下面的Enumerable类提供支持,也就是说,只要是实现了IEnumerable<T>的对象都可以使用Linq的语法来查询。LINQ定义了大约40个查询操作符,如select、from、in、where、group by 以及order by,通过查看源代码,实际上linq为IEnumerable<TSource>实现了一系列的扩展方法。

二、Linq中的关键字

今天这里主要讨论order by 和group by的使用

1.linq order by(多列)

代码语言:javascript
复制
            var list=     from r in Transactions
                          where r.ZhiFuQuDao== "支付宝"
                          orderby r.HospitalID ,r.Moneys descending 
                          select r;

2.Lambda表达式 实现 order by(多列)

代码语言:javascript
复制
            var list =    Transactions.
                          OrderBy(r => r.HospitalID).
                          ThenBy(r => r.Type).
                          ThenByDescending(r => r.Moneys ). Take(10);

3.linq group by(多列)

1.简单的实现方式:

代码语言:javascript
复制
 
         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)

代码语言:javascript
复制
 

               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)

代码语言:javascript
复制
 

     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(多列带表达式)

代码语言:javascript
复制
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"将含有相同字母的进行分组并排序。

本文参与?腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-10-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体同步曝光计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.linq order by(多列)
  • 2.Lambda表达式 实现 order by(多列)
  • 3.linq group by(多列)
  • 4. lambda group by(多列带表达式)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com