创建要查询的对象:
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分组的Linq扩展函数版本
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);
}

Linq 和 Lambda 查询中按照多个值进行分组GroupBy的更多相关文章

  1. Linq 中按照多个值进行分组(GroupBy)

    Linq 中按照多个值进行分组(GroupBy) .GroupBy(x => new { x.Age, x.Sex }) group emp by new { emp.Age, emp.Sex ...

  2. 浅谈sql 、linq、lambda 查询语句的区别

    浅谈sql .linq.lambda 查询语句的区别 LINQ的书写格式如下: from 临时变量 in 集合对象或数据库对象 where 条件表达式 [order by条件] select 临时变量 ...

  3. LINQ to Entities 查询中的标准查询运算符

    投影和筛选方法 投影指的是转换的结果集到所需的窗体中的元素. 例如,可以从结果集中的每个对象投影所需的属性子集,可以投影一个属性并对其执行数学计算,也可以从结果集投影整个对象. 投影方法有 Selec ...

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

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

  5. 使用LINQ获取List列表中的某个字段值

    使用LINQ获取列表中的某个字段值,下面以获取员工列表中的编号字段为例子. 1.使用Select方法 List<Emplayee> emplayeeList = GetEmplayeeLi ...

  6. sql 、linq、lambda 查询语句的区别

    LINQ的书写格式如下: from 临时变量 in 集合对象或数据库对象 where 条件表达式 [order by条件] select 临时变量中被查询的值 [group by 条件] Lambda ...

  7. linq 和lambda查询

    EF 查询的两种 写法. linq 方法 或者 lambda方法 其中 ,只有tolist()的时候,才会真正的 在数据库中执行. 如果没有 tolist 方法,那么province1是 iqueab ...

  8. sql、linq和lambda查询语句比较inner join和group by组合使用及匿名类型的处理

    使用EF自己做的小功能需要遇到inner join和group by组合使用及匿名类型的处理,搜了很多,基本不能满足自己的需要,所以总结了也实现了就自己写出来,已备查看及伙伴查询参考(一般的语句查询就 ...

  9. 在 LINQ to Entities 查询中无法构造实体或复杂类型

    public List<CustomerType> GetCustomerTypesBySchemaTypeCode(int schemaTypeCode) { var query = ( ...

随机推荐

  1. 两种设置WebLogic启动内存的方法

    我们经常在使用WebLoigc部署应用程序后,发现程序运行速度并不是很快,遇到这种情况我们可以尝试调整启动时分配的内存,设置方法有两种:    一.在..\domain\startWebLoigc.* ...

  2. 感知机学习算法Java实现

    感知机学习算法Java实现. Perceptron类用于实现感知机, 其中的perceptronOriginal()方法用于实现感知机学习算法的原始形式: perceptronAnother()方法用 ...

  3. Android实现推送方式解决方案 - 长连接+心跳机制(MQTT协议)

    本文介绍在Android中实现推送方式的基础知识及相关解决方案.推送功能在手机开发中应用的场景是越来起来了,不说别的,就我们手机上的新闻客户端就时不j时的推送过来新的消息,很方便的阅读最新的新闻信息. ...

  4. CS231n笔记列表

    课程基础1:Numpy Tutorial 课程基础2:Scipy Matplotlib 1.1 图像分类和Nearest Neighbor分类器 1.2 k-Nearest Neighbor分类器 1 ...

  5. Gwt第三方组件、框架介绍

    介绍一下我接触过的Gwt第三方组件.框架及项目 1. Mygwt 曾经的大名鼎鼎的gwt第三方框架,在某些gwt框架的排名中排名第一.这个框架完全用gwt的方式实现了ext-js的功能,不依赖于ext ...

  6. mysql存储过程获取sqlstate message_text

    群里有人询问,在mysql的proc中如何获取错误信息.错误编号呢?我们知道在oracle.mssql中比较简单: oracle中sqlcode,sqlerrm ;mssql中ERROR_PROCED ...

  7. 开发环境入门 linux基础 基本操作命令(部分) 文本结构和基本命令

    文本结构和基本命令 linux系统中系统提示符:$ 表示普通用户 su  root切换用户命令(用户名 root),输入密码,切换到其他用户状态 root 命令提示符:# exit 退出当前用户,返回 ...

  8. 如何解决SSH登录Solaris主机速度慢的问题

    SSH登录速度慢可能有多种原因. 1. 与DNS有关 缺省情况下,当客户端用SSH登录solaris服务器时,服务器会试图反向解析客户端的IP 地址(即把IP地址解析成机器名).如果Solaris系统 ...

  9. C语言学习笔记--内存操作常见错误

    1. 野指针 (1)指针变量中的值是非法的内存地址,进而形成野指针 (2)野指针不是 NULL 指针,是指向不可用内存地址的指针 (3)NULL 指针并无危害,很好判断,也很好调试 (4)C 语言中无 ...

  10. DAY17-Ajax

    Ajax准备知识:json 什么是json? 定义: JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式. 它基于 ECMAScript ( ...