本实例适用于:将记录中的数据进行分组得到一个一对多模型数据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使用的正确姿势的更多相关文章

  1. 关于Linq中的Lambda表达式中OrderBy的深入理解

    起因:就是一段Linq语句,OrderBy里面的i是什么? IQueryable<Student> slist = (from s in EFDB.Student select s). O ...

  2. Lambda 表达式中的变量范围

    delegate bool D(); delegate bool D2(int i); class Test { D del; D2 del2; public void TestMethod(int ...

  3. java 8 lambda表达式中的异常处理

    目录 简介 处理Unchecked Exception 处理checked Exception 总结 java 8 lambda表达式中的异常处理 简介 java 8中引入了lambda表达式,lam ...

  4. lambda表达式中无法抛出受检异常!

    抛出受检异常的时候,我们的接口应该带上throw关键字,但通过lambda表达式实现的Consumer的accept方法并不带有关键字,因此在lambda表达式中不能抛出受检异常必须把它吃掉

  5. ASP.NET Core 2.0 中读取 Request.Body 的正确姿势

    原文:ASP.NET Core 中读取 Request.Body 的正确姿势 ASP.NET Core 中的 Request.Body 虽然是一个 Stream ,但它是一个与众不同的 Stream ...

  6. .Net Linq与Lambda表达式中GroupBy以多个字段分组

    一.引入 基本上熟悉C#语言的没有不知道Lambda表达式的,其对于数据的处理真的是太方便了.其中分组处理的GroupBy方法在List中的使用非常广泛.正式近期一个功能需求中又遇到了,而且是需要Gr ...

  7. (转) Lambda表达式中的表达式lambda和语句lambda区别

    Lambda表达式可分为表达式lambda和语句lambda 表达式lambda:表达式位于 => 运算符右侧的lambda表达式称为表达式lambda (input parameters) = ...

  8. Lambda表达式中的表达式lambda和语句lambda区别

    Lambda表达式可分为表达式lambda和语句lambda 表达式lambda:表达式位于 => 运算符右侧的lambda表达式称为表达式lambda (input parameters) = ...

  9. 在Lambda表达式中使用循环变量

    在C#5.0之前,如果在foreach循环中的lambda表达式里使用循环变量,那么你会发现一些意想不到的现象,例子如下: , , , }; var actions = new List<Act ...

随机推荐

  1. 洛谷P2886 [USACO07NOV]牛继电器Cow Relays

    题意很简单,给一张图,把基本的求起点到终点最短路改成求经过k条边的最短路. 求最短路常用的算法是dijkstra,SPFA,还有floyd. 考虑floyd的过程: c[i][j]=min(c[i][ ...

  2. Python中字符串的处理方法

    1.字符串 word = '字符串' sentence = "这是一个句子." paragraph = """这是一个段落, 可以由多行组成" ...

  3. JS之工厂模式

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. Timer 的学习

    Timer 实例化多个对象就会启动多个线程 TimerTask 中 捕获异常为基类Exception,那么出现异常后就继续执行.及时报错 TimerTask中未捕获异常或者捕获异常与程序抛出异常不一致 ...

  5. 使用mybatis-generator工具自动生成mybatis代码

    使用mybatis-generator工具自动生成mybatis代码 步骤如下: 1.引入maven  依赖,在项目pom.xml文件中添加 <plugin> <groupId> ...

  6. 策略模式在ThreadpoolExecutor中的应用

    偶然读到ThreadpoolExecutor的源码,发现里面使用到了策略模式,抓出来和大家分享下: 感兴趣的朋友们可以读读 ThreadPoolExecutor的源码: public void set ...

  7. Python基础学习---比较运算符

    比较运算符 注意: 不同类型数据之间只能==   !=   ,不能比较大小>   >=   <   <= 比较运算符返回一个bool值 比较运算符可以链式运算      4&g ...

  8. QT之两种模态对话框的调用

    模态对话框:就是没有关闭它之前,不能再与同一个应用程序的其他窗口进行交互. 1.show调用 LoginDialog *dlg = new LoginDialog(); dlg->setModa ...

  9. deepfake-faceswap第一篇论文-2016摘要

    核心目标:给定一个人的单张图片A,另一个人的单张图片B,在保持姿势,面部表情,视线方向,发型和光照不变的条件下,将A图片中的人物换成B图片中的人物.2016年,文章[1]实现了这个目标: 德国的蒂宾根 ...

  10. Log4net 配置文件组成

    Example: <?xml version="1.0" encoding="utf-8" ?><configuration><l ...