一、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. hashlib(摘要算法的模块)--重要 (一)

    课件地址:https://www.cnblogs.com/mys6/p/10584933.html  搜索hashlib模块 # 登录认证# 加密 --> 解密# 摘要算法# 两个字符串 :# ...

  2. 微信小程序组件化实践

    Do Not Repeat Yourself 如何提高代码质量,方法有许多:抽象.模块.组件化,我认为它们的中心点都是--Do Not Repeat Yourself. 小程序组件化 我们先看看小程序 ...

  3. Manjaro Linux执行某些命令缺少libtinfo.so.5问题

    Manjaro默认有libtinfo.so.6而没有libtinfo.so.5,软件如果需要可执行以下命令安装: sudo pacman -S ncurses5-compat-libs #或 sudo ...

  4. MongoDB系统CentOS 7.1 crash的排障过程

    [作者] 王栋:携程技术保障中心数据库专家,对数据库疑难问题的排查和数据库自动化智能化运维工具的开发有强烈的兴趣. [问题描述] 最近我们有多台MongoDB的服务器CentOS 7.1系统发生了cr ...

  5. Android 手势识别—缩放

    上一篇讲解了手势识别中的点击和双击事件的识别,用到的是GestureDetector类和GestureDetectorCompat类,用于监听用户触摸屏幕中的简单动作. 缩放 基本用法如下,可以通过缩 ...

  6. Git&GitHub学习日志

    Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理. Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件.作为一个 ...

  7. RabbitMQ初学之二:直接发送消息到队列

    一. 背景 总前提:队列无论是在生产者声明还是在消费者声明,只有声明了,才能在RabbitMQ的管理界面看到该队列 生产者直接发送消息到队列,消费者直接消费队列中的消息,而不用指定exchange并绑 ...

  8. 快速初步了解Neo4j与使用

    快速初步了解Neo4j与使用 Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中.它是一个嵌入式的.基于磁盘的.具备完全的事务特性的Java持久化引擎,但是它将结构化 ...

  9. python字符串中包含Unicode插入数据库乱码问题 分类: Python 2015-04-28 18:19 342人阅读 评论(0) 收藏

    之前在编码的时候遇到一个奇葩的问题,无论如何操作,写入数据库的字符都是乱码,之后是这样解决的,意思就是先解码,然后再插入数据库 cost_str = json.dumps(cost_info) cos ...

  10. CDH版本大数据集群下搭建Hue(hadoop-2.6.0-cdh5.5.4.gz + hue-3.9.0-cdh5.5.4.tar.gz)(博主推荐)

    不多说,直接上干货! 我的集群机器情况是 bigdatamaster(192.168.80.10).bigdataslave1(192.168.80.11)和bigdataslave2(192.168 ...