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 ...
随机推荐
- 利用DNSlog回显Weblogic(CVE-2017-10271) 漏洞执行命令结果
作者:Armyzer0 Weblogic(CVE-2017-10271) 漏洞出来以后又是一波血雨腥风,正好我昨天测试的时候发现了一个存在这个漏洞的weblogic,但是他不回显咋办呢!让他返回执行结 ...
- SELECT 三级联动 [转]
<!DOCTYPE html> <html> <head> <meta charset=gbk /> <title>selectList&l ...
- .Net - WebApi
WebApi C#进阶系列 - WebApi: WebApi 服务监控 + log4net:
- python学习笔记07-元组 字典
元组: 元组里面的元素不可修改 创建后只可读 不可写 一个元素的时候 在后面加一个逗号 字典: 无序的 Python 中唯一的映射类型 采用键值对的形式存储数据 key必须是可哈希的 可哈希表示 ...
- 优化 JS 条件语句的 5 个技巧
优化 JS 条件语句的 5 个技巧 原创: 前端大全 前端大全 昨天 (给前端大全加星标,提升前端技能) 编译:伯乐在线/Mr.Dcheng http://blog.jobbole.com/11467 ...
- Openerp负载平衡
来自OpenERP 7.0 带来了许多新特性,架构上也有许多改进.其中可配置 worker 参数,可使 OpenERP 运行在多进程模式,突破GIL的限制,有效利用了现代多核CPU的性能.但默认情况下 ...
- Windows10下搭建TensorFlow环境
转载请注明源出处:http://www.cnblogs.com/lighten/p/6753695.html 这篇文章介绍了一下在Windows上安装TensorFlow的步骤,主要是翻译了一下官方的 ...
- pycharm的python console报错CE.app/Contents/helpers/pydev/_pydev_bundle/pydev_ipython_console_011.py", line 87, in init self.matchers.remove(self.python_matches) ValueError: list.remove(x): x not in list
卸载ipython pip uninstall ipython 安装ipython6.2.0 pip install ipython==6.2.0
- Linux-(kill,wc,killall,ln,cal,date)
kill命令 1.命令格式: kill [参数] [进程号] 2.命令功能: 发送指定的信号到相应进程.不指定型号将发送SIGTERM(15)终止指定进程.如果仍无法终止该程序可用“-KILL” 参数 ...
- WPF的ControlTemplate和DataTemplate简介
首先理清几个概念,Template.ControlTemplate.ContentTemplate.DataTemplate.ContentControl 这几个东西名字都差不多,意思感觉也接近,初次 ...