linq lambda GroupBy 用法
/// <summary>要查询的对象</summary>
class Employee {
public int ID { get;set; }
public string FName { get; set; }
public int Age { get; set; }
public char Sex { get; set; }
}
如果对这个类的Age和Sex的连个字段进行分组,方法如下:
// 先造一些数据
List<Employee> empList = new List<Employee>();
empList.Add(new Employee() {
ID = 1, FName = "John", Age = 23, Sex = 'M'
});
empList.Add(new Employee() {
ID = 2, FName = "Mary", Age = 25, Sex = 'F'
}); empList.Add(new Employee() {
ID = 3, FName = "Amber", Age = 23, Sex = 'M'
});
empList.Add(new Employee() {
ID = 4, FName = "Kathy", Age = 25, Sex = 'M'
});
empList.Add(new Employee() {
ID = 5, FName = "Lena", Age = 27, Sex = 'F'
}); empList.Add(new Employee() {
ID = 6, FName = "Bill", Age = 28, Sex = 'M'
}); empList.Add(new Employee() {
ID = 7, FName = "Celina", Age = 27, Sex = 'F'
});
empList.Add(new Employee() {
ID = 8, FName = "John", Age = 28, Sex = 'M'
});
接下来的做法是:
// 实现多key分组的扩展函数版本
var sums = empList
.GroupBy(x => new { x.Age, x.Sex })
.Select(group => new {
Peo = group.Key, Count = group.Count()
});
foreach (var employee in sums) {
Console.WriteLine(employee.Count + ": " + employee.Peo);
} // 实现多key分组的lambda版本
var sums2 = from emp in empList
group emp by new { emp.Age, emp.Sex } into g
select new { Peo = g.Key, Count = g.Count() };
foreach (var employee in sums) {
Console.WriteLine(employee.Count + ": " + employee.Peo);
}
这个例子中就充分利用了匿名类型。
varListByOwner= list.GroupBy(l => l.Owner)
.Select(lg =>
new{
Owner= lg.Key,
Boxes= lg.Count(),
TotalWeight= lg.Sum(w => w.Weight),
TotalVolume= lg.Sum(w => w.Volume)
});
var q =from b in listOfBoxes
group b by b.Ownerinto g
selectnew
{
Owner= g.Key,
Boxes= g.Count(),
TotalWeight= g.Sum(item => item.Weight),
TotalVolume= g.Sum(item => item.Volume)
};
linq lambda GroupBy 用法的更多相关文章
- C# LINQ查询表达式用法对应Lambda表达式
C#编程语言非常优美,我个人还是非常赞同的.特别是在学习一段时间C#后发现确实在它的语法和美观度来说确实要比其它编程语言强一些(也可能是由于VS编译器的加持)用起来非常舒服,而且对于C#我觉得他最优美 ...
- c# Linq&Lambda
0.写这个文章主要记录下常用Lambda的用法,能力有限,文中有问题的地方希望各位大神指出来谢谢!因为平时写代码的时候没有特地去用lambda,全是用一些循环,少量会用到lambda,虽然也能实现要的 ...
- SQL,LINQ,Lambda语法对照图(转载)
如果你熟悉SQL语句,当使用LINQ时,会有似曾相识的感觉.但又略有不同.下面是SQL和LINQ,Lambda语法对照图 SQL LINQ Lambda SELECT * FROM HumanReso ...
- Pandas高级教程之:GroupBy用法
Pandas高级教程之:GroupBy用法 目录 简介 分割数据 多index get_group dropna groups属性 index的层级 group的遍历 聚合操作 通用聚合方法 同时使用 ...
- ASP.NET EF(LINQ/Lambda查询)
EF(EntityFrameWork) ORM(对象关系映射框架/数据持久化框架),根据实体对象操作数据表中数据的一种面向对象的操作框架,底层也是调用ADO.NET ASP.NET MVC 项目会自动 ...
- Linq Mysql GroupBy语句的问题处理
语句如下: var resumeList = db.ChannelResume.Where(model); var groupValues = resumeList.GroupBy(t => n ...
- lambda的用法
关于lambda的用法: lambda的用法和def的用法基本相同.区别在于def可以用来定义简单和复杂的函数,而lambda主要用来定义简单的函数.下面通过两个例子来了解下: lambda 参数1, ...
- 细说Python的lambda函数用法,建议收藏
细说Python的lambda函数用法,建议收藏 在Python中有两种函数,一种是def定义的函数,另一种是lambda函数,也就是大家常说的匿名函数.今天我就和大家聊聊lambda函数,在Pyth ...
- [算法1-排序](.NET源码学习)& LINQ & Lambda
[算法1-排序](.NET源码学习)& LINQ & Lambda 说起排序算法,在日常实际开发中我们基本不在意这些事情,有API不用不是没事找事嘛.但必要的基础还是需要了解掌握. 排 ...
随机推荐
- linux4
linux 特点:1.免费 开源(代码公开)2.支持多线程/多用户的操作系统3.安全性4.对内存和文件管理有自己的一套优越的方法 linux最小只需要4M ->嵌入式开发默认不启动用户界面roo ...
- LUA的编译、环境等
Lua的环境.编译等 Lua命令行 lua命令行选项: -i:进入交互式 -e:执行lua代码 -l:加载库文件 例如使用下面的命令启动lua解释器,可以重新定义lua提示符. lua -i -e & ...
- struts2使用注解--ACTION中的应用
1.在类中指定包:@ParentPackage("system").其中system是在struts.xml中定义的包名.2.配置文件--->注解2.1配置文件方式(返回js ...
- android-详解Android 6.0运行时权限
感谢郭神,从Android 6.0开始,不再是安装应用时用户确定获得全部的权限.而是在使用软件过程中需要该权限时,弹出对话框让用户选择权限.不仅如此,用户选择权限后还可以关闭. 检查是否获得权限 通过 ...
- Swift学习笔记
swift 面向过程 数据结构 3.1 常量和变量 定义常量和变量 let a = 1 var b = 2 显式定义和隐式定义 无需指定强类型,编译器会自动根据初始值推断出其类型.与c#相似.如果在定 ...
- iPod怎么下载歌曲?用iTunes传文件功能!
昨儿一小美女拿我的手机听歌,说她不知道iPod怎么下载歌曲,因为还在上学家里不肯给买智能机,怕会影响学业.她的iPod shuffle刚买没多久还不会往里传歌曲,让我帮看看怎么整,心想她应该是没装iT ...
- 解决ie文本框不能输入和获取焦点问题
解决办法: 从正常的机器上拷贝c:\windows\system32\mshtmled.dll到本机的system32目录下即可.或者从安装盘中提取该文件. 加载mshtmled.dll: ...
- SGU-169 Numbers(找规律)
题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=169 解题报告: P(n)定义为n的所有位数的乘积,例如P(1243)=1*2*3* ...
- [Effective JavaScript 笔记]第2章:变量作用域--个人总结
前言 第二章主要讲解各种变量作用域,通过这章的学习,接触到了很多之前没有接触过的东西,比如不经常用到的eval,命名函数表达式,with语句块等,下面是一个列表,我对各节的一点点个人总结,很多都是自己 ...
- ORACLE10G工作原理
数据库查询语句内部执行过程 Select * from xxx 步骤 分析阶段(parse) 1. 共享池库高速缓存有没有该语句.如果有直接返回结果. 2. 语法分 ...