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 ...
随机推荐
- 利用本地浏览器远程服务器上的jupyter notebook
windows中访问远程服务器的方式有很多种:使用windows系统自带的网络功能,直接输入服务器地址访问:使用putty软件远程访问:使用xftp软件登陆:还可以使用x2go客户端图形界面远程访问. ...
- 【webpack学习笔记】a08-缓存
一般要优化网站的加载速度可以从缓存入手,利用缓存可以降低网络流量,减少访问请求,从而可以达到加快访问速度的目的. 但是,如果一旦将文件缓存,那么有更新的时候就不能及时更新,若要看到最新内容,那么就需要 ...
- HFun.快速开发平台(一)=》简述
[——使用成熟的技术实现了解的业务,关注面向对象,关注业务领域] 偶然的机会又回到了园子,看到上次的文章已是N年前,洽巧近期正在开发一个小程序,标题定为“快速开发平台”有点夸张,算是给自己定个小目标. ...
- 分享:五个非常有用的WP插件
一全老师(www.yiquanseo.com)认为非常有用的几款WP插件,用WordPress做站的可以看下,估计你很可能用得到! 第一款WooCommerce Page Builder: 这款插件是 ...
- Python2.0 与 3.0 的区别
Python 2.0 =默认编码=ASSIC=不支持中文 Python 3.0 =默认编码=UNICODE=默认支持中文 In summary : Python 2.x is legacy, Py ...
- sed 命令简介
sed 默认把文件内容全部显示出来(擅长取行 替换) 参数如下: - n 取消默认输出 一般与P一起使用 查看内容‘10,20p’ 显示10-20 行的内容 - i 修改文件内容 - i.bak ...
- Android四大组件之Service --- 如何启动和停止Service?
启动和停止方法主要是通过Intent来实现 以上一篇中的ServiceTest项目为例来启动和停止MyService这个服务 首先修改activity_main.xml中的代码,如下所示:<Li ...
- NLog使用整理
NLog使用中碰到的问题整理 1,日志写mysql数据库报错, 原因: 在sql语句中使用了mysql的函数now() 导致插入失败, 解决办法: 使用参数代替now(). 在nlog配置文件中设置 ...
- mui框架上下拉加载
mui框架被定位为“最接近原生体验的移动App的UI框架”. 写下mui框架中常用的两个功能,下拉刷新和上拉加载,没有后台交互,用js写假数据模拟,下面直接上代码. <!DOCTYPE html ...
- mysql安装(centos 7)
1.安装依赖 yum install -y cmake make gcc gcc-c++ libaio ncurses ncurses-devel cd /usr/local/src 链接:https ...