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

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表达式实现)以及综合案例的更多相关文章

  1. mysql 中order by 与group by的顺序

    mysql 中order by 与group by的顺序 是: select from where group by order by 注意:group by 比order by先执行,order b ...

  2. 泛型委托及委托中所涉及到匿名方法、Lambda表达式

    泛型委托及委托中所涉及到匿名方法.Lambda表达式 引言: 最初学习c#时,感觉委托.事件这块很难,其中在学习的过程中还写了一篇学习笔记:委托.事件学习笔记.今天重新温故委托.事件,并且把最近学习到 ...

  3. sql中order by和group by的区别

    order by 和 group by 的区别: 1,order by 从英文里理解就是行的排序方式,默认的为升序. order by 后面必须列出排序的字段名,可以是多个字段名. 2,group b ...

  4. 委托学习笔记后续:泛型委托及委托中所涉及到匿名方法、Lambda表达式

    引言: 最初学习c#时,感觉委托.事件这块很难,其中在学习的过程中还写了一篇学习笔记:委托.事件学习笔记.今天重新温故委托.事件,并且把最近学习到和委托相关的匿名方法.Lambda表达式及泛型委托记录 ...

  5. JavaScript中的函数和C#中的匿名函数(委托、lambda表达式)

    在js中function是一个一个引用类型,所以可以出现这样的代码: 'use strict'; var compare=function(value1, value2) { if (value1&l ...

  6. Java中的内部类————以及jdk1.8的lambda表达式

    一.内部类学习导图 1>.静态内部类: 使用static修饰符来修饰内部类,则这个内部类就属于外部类本身,而不属于外部类的某个对象.因此使用static修饰的内部类被称为静态内部类. publi ...

  7. C++中的数组array和vector,lambda表达式,C字符串加操作,C++中新类型数组(数组缓存),多元数组,new缓冲

     使用C++风格的数组.不须要管理内存. array要注意不要溢出,由于它是栈上开辟内存. array适用于不论什么类型 #include<iostream> #include< ...

  8. Java中的函数式编程(三)lambda表达式

    写在前面 lambda表达式是一个匿名函数.在Java 8中,它和函数式接口一起,共同构建了函数式编程的框架.   lambda表达式乍看像是匿名内部类的一种语法糖,但实际上,它们是两种本质不同的事物 ...

  9. C#中Func<T,TResult>的用法和Lambda表达式

    在C#3.0中引用了Limbda表达式,Limbda表达式实际上就是一个方法,只不过该方法是匿名方法(即没有名称的方法)代码片段: Func<int,string,string> t=(i ...

随机推荐

  1. 利用nginx实现负载均衡

    1.安装nginx和tomcat 我这里是使用docker安装的.安装流程可参照 dockerfile 这里安装了两个tomcat,端口分别是42000和42001.第二个tomcat的首页随便加了些 ...

  2. 内核漏洞学习—熟悉HEVD

    一直以来内核漏洞安全给很多人的印象就是:难,枯燥.但是内核安全是否掌握是衡量一个系统安全工程师水平的标准之一,也是安全从业人员都应该掌握的基本功.本文通过详细的实例带领读者走进内核安全的大门.难度系数 ...

  3. linux下各个目录里面都装了什么

    文章来源:http://blog.csdn.net/sunstars2009918/article/details/7038772 搞电脑的人总想知道自己的系统里到底有些什么东西,于是我就在Linux ...

  4. Tomcat启动内存设置

    Tomcat启动内存设置 Tomcat的启动分为startupo.bat启动和注册为windows服务的启动,下面一一说明. 1.startup.bat启动 在tomcat_home/bin目录下找到 ...

  5. selenium IDE的基本命令

    waitForText.verifyText和asserText命令 waitForText语句在测试执行时用来判断某些文本是否存在界面中.若界面上显示了指定文本,测试程序会继续执行:若等待一段时间后 ...

  6. Spring Security构建Rest服务-1201-Spring Security OAuth开发APP认证框架之实现服务提供商

    实现服务提供商,就是要实现认证服务器.资源服务器. 现在做的都是app的东西,所以在app项目写代码  认证服务器: 新建 ImoocAuthenticationServerConfig 类,@Ena ...

  7. Android 开发工具类 21_SAXForHandler

    解析 XML 有两种形式: 1.XMLReader XMLReaser xmlReader = saxParser.getXMLReader(); xmlReadeer.setContentHandl ...

  8. golang-nsq消息队列应用

    1. 安装nsq brew install nsq 2.启动nsq https://nsq.io/overview/quick_start.html 3.golang client var produ ...

  9. celery在Django中的应用

    这里不解释celery,如果不清楚可以参考下面链接: http://docs.celeryproject.org/en/latest/getting-started/introduction.html ...

  10. android学习-ndk-build(androidstudio编译cocos2d-x库的cpp为so文件的解释)

    本文不作为ndk初学使用,只是对cpp等c++文件编译成so文件的过程中,参数含义,及ndk配置的解释.使用的技术比较旧. androidStudio使用gradle调用ndk-build工具编译c+ ...