zoukankan      html  css  js  c++  java
  • linq中order by 和group by (含lambda表达式实现)以及综合案例

    一、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(多列)

                var list=     from r in Transactions
                              where r.ZhiFuQuDao== "支付宝"
                              orderby r.HospitalID ,r.Moneys descending 
                              select r;

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

                var list =    Transactions.
                              OrderBy(r => r.HospitalID).
                              ThenBy(r => r.Type).
                              ThenByDescending(r => r.Moneys ). Take(10);

    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"将含有相同字母的进行分组并排序。

  • 相关阅读:
    什么是封装?
    table
    POM文件
    Maven环境的搭建
    什么是maven
    J2EE的三层经典结构
    DOM对象和jQuery对象对比
    jQuery常用选择器分类
    什么是JQuery?它的特点是什么?
    jQuery准备函数语法
  • 原文地址:https://www.cnblogs.com/yaphetsfang/p/9716895.html
Copyright © 2011-2022 走看看