Lambda表达式中的GroupBy使用的正确姿势
本实例适用于:将记录中的数据进行分组得到一个一对多模型数据Model
案例中的Model
注:UserDetailes 包含User的信息和其所属部门信息
需求:将UserDetailes 的记录分组得到每个部门及其包含的用户
User:
public class User
{
public int UserID { get; set; }
public string UserName { get; set; }
}
Dept:
public class Dept
{
public int DeptId { get; set; } public string DeptName { get; set; }
public List<User> Users { get; set; }
}
UserDetailes
public class UserDetailes
{
public int UserID { get; set; }
public string UserName { get; set; } public int DeptId { get; set; } public string DeptName { get; set; }
}
Dept提取方法:
/// <summary>
/// 模拟数据
/// </summary>
/// <returns></returns>
static List<UserDetailes> GetUser()
{
var users = new List<UserDetailes>();
for(int id=;id <=;id++ )
{
users.Add(new UserDetailes()
{
UserID = id,
UserName = "user" + id.ToString(),
DeptId = id/,
DeptName = "dept" + (id / ).ToString()
});
}
return users;
}
static void Main(string[] args)
{
var users = GetUser();
var Depts = users.GroupBy(n => new { n.DeptId, n.DeptName })
.Select(n => new Dept() {
DeptId = n.Key.DeptId,// n.key ---分组关键字段model n。分组后的集合
DeptName = n.Key.DeptName,
Users = n.Select(u => new User() {
UserID = u.UserID,
UserName = u.UserName
}).ToList() });
Console.ReadLine();
}
Lambda表达式中的GroupBy使用的正确姿势的更多相关文章
- 关于Linq中的Lambda表达式中OrderBy的深入理解
起因:就是一段Linq语句,OrderBy里面的i是什么? IQueryable<Student> slist = (from s in EFDB.Student select s). O ...
- Lambda 表达式中的变量范围
delegate bool D(); delegate bool D2(int i); class Test { D del; D2 del2; public void TestMethod(int ...
- java 8 lambda表达式中的异常处理
目录 简介 处理Unchecked Exception 处理checked Exception 总结 java 8 lambda表达式中的异常处理 简介 java 8中引入了lambda表达式,lam ...
- lambda表达式中无法抛出受检异常!
抛出受检异常的时候,我们的接口应该带上throw关键字,但通过lambda表达式实现的Consumer的accept方法并不带有关键字,因此在lambda表达式中不能抛出受检异常必须把它吃掉
- ASP.NET Core 2.0 中读取 Request.Body 的正确姿势
原文:ASP.NET Core 中读取 Request.Body 的正确姿势 ASP.NET Core 中的 Request.Body 虽然是一个 Stream ,但它是一个与众不同的 Stream ...
- .Net Linq与Lambda表达式中GroupBy以多个字段分组
一.引入 基本上熟悉C#语言的没有不知道Lambda表达式的,其对于数据的处理真的是太方便了.其中分组处理的GroupBy方法在List中的使用非常广泛.正式近期一个功能需求中又遇到了,而且是需要Gr ...
- (转) Lambda表达式中的表达式lambda和语句lambda区别
Lambda表达式可分为表达式lambda和语句lambda 表达式lambda:表达式位于 => 运算符右侧的lambda表达式称为表达式lambda (input parameters) = ...
- Lambda表达式中的表达式lambda和语句lambda区别
Lambda表达式可分为表达式lambda和语句lambda 表达式lambda:表达式位于 => 运算符右侧的lambda表达式称为表达式lambda (input parameters) = ...
- 在Lambda表达式中使用循环变量
在C#5.0之前,如果在foreach循环中的lambda表达式里使用循环变量,那么你会发现一些意想不到的现象,例子如下: , , , }; var actions = new List<Act ...
随机推荐
- Linux关机总结
立刻关机 root@ubuntu17:~# shutdown -h now 100分钟后关机 root@ubuntu17:~# shutdown -h + Shutdown scheduled -- ...
- quartz任务调度框架与spring整合
Quartz是什么? Quartz 是一种功能丰富的,开放源码的作业调度库,可以在几乎任何Java应用程序集成 - 从最小的独立的应用程序到规模最大电子商务系统.Quartz可以用来创建简单或复杂的日 ...
- Java_jsp.jstl.Function函数标签库.记录
JSTL Functions标签库 本书第12章的12.3节(定义和使用EL函数)介绍了EL函数的创建和使用方法.在JSTL Functions标签库中提供了一组常用的EL函数,主要用于处理字符串,在 ...
- 《Swell数学》用户故事
一.用户故事基础知识: 1. 从用户的角度来描述用户渴望得到的功能. 2. 用户故事是描述对用户有价值的功能,好的用户故事应该包括角色.功能和商业价值三个要素. 3. 一个用户故事只是以客户能够明白的 ...
- node作为中间层 —> 跨域请求java后台接口(使用http-proxy-middleware中间件)
情景:利用node的express 作为中间层,跨域调取java后台接口,由于java接口对session有判断,因此每次请求都必须在req的headers中需要带上cookie,否则接口报500错误 ...
- hdu4044
题意:给你一颗树有n个节点,树的根节点为1,表示为敌人的基地,其他叶子节点为你的基地,你一开始有m元,给你每个节点可以建造的塔的数量和塔的价格和可以照成的伤害,每个节点至多建立一座塔.敌人的基地每次会 ...
- SQL Server用表组织数据
一.主键 主键作为表中的唯一标识,标识这一列不允许出现重复数据 如果两列或多列组合起来唯一标识表中的每一行,该主键叫“复合主键” 选择主键的原则 最少性 尽量选择单个键作为主键 ...
- Dangerous well
Firsttime to develop games throuth Unity3d, such a great platform! You can build your games more qui ...
- Session 与 Token 的区别
1. 为什么要有session的出现?答:是由于网络中http协议造成的,因为http本身是无状态协议,这样,无法确定你的本次请求和上次请求是不是你发送的.如果要进行类似论坛登陆相关的操作,就实现不了 ...
- Groovy学习笔记-Java 5新特性支持
1.枚举enum enum CoffeeSize{ SHORT, SMALL, MEDIUM, LARGE, MUG } def orderCoffee(size){ print "Coff ...