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();
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表达式实现)以及综合案例的更多相关文章
- mysql 中order by 与group by的顺序
mysql 中order by 与group by的顺序 是: select from where group by order by 注意:group by 比order by先执行,order b ...
- 泛型委托及委托中所涉及到匿名方法、Lambda表达式
泛型委托及委托中所涉及到匿名方法.Lambda表达式 引言: 最初学习c#时,感觉委托.事件这块很难,其中在学习的过程中还写了一篇学习笔记:委托.事件学习笔记.今天重新温故委托.事件,并且把最近学习到 ...
- sql中order by和group by的区别
order by 和 group by 的区别: 1,order by 从英文里理解就是行的排序方式,默认的为升序. order by 后面必须列出排序的字段名,可以是多个字段名. 2,group b ...
- 委托学习笔记后续:泛型委托及委托中所涉及到匿名方法、Lambda表达式
引言: 最初学习c#时,感觉委托.事件这块很难,其中在学习的过程中还写了一篇学习笔记:委托.事件学习笔记.今天重新温故委托.事件,并且把最近学习到和委托相关的匿名方法.Lambda表达式及泛型委托记录 ...
- JavaScript中的函数和C#中的匿名函数(委托、lambda表达式)
在js中function是一个一个引用类型,所以可以出现这样的代码: 'use strict'; var compare=function(value1, value2) { if (value1&l ...
- Java中的内部类————以及jdk1.8的lambda表达式
一.内部类学习导图 1>.静态内部类: 使用static修饰符来修饰内部类,则这个内部类就属于外部类本身,而不属于外部类的某个对象.因此使用static修饰的内部类被称为静态内部类. publi ...
- C++中的数组array和vector,lambda表达式,C字符串加操作,C++中新类型数组(数组缓存),多元数组,new缓冲
使用C++风格的数组.不须要管理内存. array要注意不要溢出,由于它是栈上开辟内存. array适用于不论什么类型 #include<iostream> #include< ...
- Java中的函数式编程(三)lambda表达式
写在前面 lambda表达式是一个匿名函数.在Java 8中,它和函数式接口一起,共同构建了函数式编程的框架. lambda表达式乍看像是匿名内部类的一种语法糖,但实际上,它们是两种本质不同的事物 ...
- C#中Func<T,TResult>的用法和Lambda表达式
在C#3.0中引用了Limbda表达式,Limbda表达式实际上就是一个方法,只不过该方法是匿名方法(即没有名称的方法)代码片段: Func<int,string,string> t=(i ...
随机推荐
- (2019)OCP 12c 062考试题库出现大量新题-4
4.Which four are true about creating and running a remote database scheduler jobs? A) A credential i ...
- 通过修改EIP寄存器实现32位程序的DLL注入
功能:通过修改EIP寄存器实现32位程序的DLL注入 <如果是64位 记得自己对应修改汇编代码部分> 原理:挂起目标进程,停止目标进程EIP的变换,在目标进程开启空间,然后把相关的指令机器 ...
- Python 使用 lambda() 结合sort() 或 sorted() 对列表嵌套字典格式的数据进行排序
1.使用sort()方法进行排序 my_list = [{"age":65, "money":5}, {"age":35, "mo ...
- 八,mysql优化——读写分离
读写分离目的是给大型网站缓解查询压力.
- Zookeeper之Curator(1)客户端基本的创建,删除,更新,查找操作api
Curator Framework提供了简化使用zookeeper更高级的API接口.它包涵很多优秀的特性,主要包括以下三点: 自动连接管理:自动处理zookeeper的连接和重试存在一些潜在的问题: ...
- docker镜像基本操作一
获取镜像 首先说明一下如何从Docker hub中获取高质量的镜像,从Docker镜像库获取镜像的命令是docker pull .其命令格式为: docker pull [选项] [Docker Re ...
- 查看服务器CPU的个数、CPU的核数、多核超线程数、机器硬件型号
这里有几个概念: 1.一台物理机的物理CPU的个数 2.一个CPU上的核数 3.一个核上面支持的线程数 有下面的计算公式: # 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 ...
- SnapKit 约束创建过程
 创建ConstraintViewDSL 调用UIView 的 snp 方法,生成一个ConstraintViewDSL. 注意这个生成的ConstraintViewDSL持有UIView. 创建C ...
- Java堆内存溢出模拟
先了解一下Java堆: 关于Java内存区域的分配,可以查看Java运行时数据区域一篇文章. Java堆是虚拟机内存管理中最大的一块区域,该区域是线程共享的,某Java进程中所有的线程都可以访问该区域 ...
- @JsonView注解的使用
看到一个新的注解以前没有用过,记录一下使用方法. 注意是:com.fasterxml.jackson.annotation.JsonView @JsonView可以过滤pojo的属性,使Control ...