本实例适用于:将记录中的数据进行分组得到一个一对多模型数据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. Python-点滴

    本节内容: python简介 安装(python,pycharm) 第一个程序(Hello,World!) 变量 用户输入 字符编码 格式化输出 if流程控制 while循环 for循环 一.Pyth ...

  2. C# [WIN32] [API] Global Hook

    NativeMethods.cs: using System; using System.Runtime.InteropServices; namespace GlobalHook { interna ...

  3. centos7搭建vsftpd并启用虚拟用户

    虚拟用户的特点是只能访问服务器为其提供的FTP服务,不能访问系统的其它资源,所以,如果想让用户对FTP服务器站内具有写权限,但又不允许访问系统其他资源,可以使用虚拟用户来提高系统的安全性. 在vsft ...

  4. git命令提交新项目

    新建的项目没有与git关联过git initgit add .git commit -m "注释"git remote add origin 新SSH:URLgit push -f ...

  5. 按住CTRL多选,按住shift连选的实现

    <tr class="address" v-for="(counts, index) in counts" :key="index" ...

  6. Data assimilation

    REF: https://en.wikipedia.org/wiki/Data_assimilation Data assimilation is the process by which obser ...

  7. csla框架__使用Factory方式实现Csla.BusinessBase对象数据处理

    环境:.net4.6+csla4.6 实现:对象的数据库访问及数据库执行使用Factory方式进行封闭. 正文: 以前在使用csla框架完成业务对象的定义时所有的数据处理都在对象内部实现,也不能说不好 ...

  8. OTP&ETS

    最近觉得实在是该梳理梳理erlang的框架内容了,所以整理了下. OTP(开放电信平台):并发系统平台, 特点:容错(erlang:get_stacktrace(),try-catch,trap_ex ...

  9. SQL-54 查找排除当前最大、最小salary之后的员工的平均工资avg_salary。

    题目描述 查找排除当前最大.最小salary之后的员工的平均工资avg_salary.CREATE TABLE `salaries` ( `emp_no` int(11) NOT NULL,`sala ...

  10. JAVA面向对象之重载与重写

    重写:子类对父类方法的重新编写 返回值不变,形参不变 不能抛出新的或者范围更广的异常 class Animal{ public void move(){ System.out.println(&quo ...