Grouping Operators Description
GroupBy GroupBy操作返回根据一些键值进行分组,每组代表IGrouping<TKey,TElement>对象
ToLookup ToLookup is the same as GroupBy; the only difference is the execution of GroupBy is deferred whereas ToLookup execution is immediate.

IList<Student> studentList = new List<Student>() { new Student() { StudentID = 1, StudentName = "John", Age = 18 } ,new Student() { StudentID = 2, StudentName = "Steve",  Age = 21 } ,new Student() { StudentID = 3, StudentName = "Bill",  Age = 18 } ,new Student() { StudentID = 4, StudentName = "Ram" , Age = 20 } ,new Student() { StudentID = 5, StudentName = "Abram" , Age = 21 } };var groupedResult = from s in studentListgroup s by s.Age;//iterate each group
foreach (var ageGroup in groupedResult)
{Console.WriteLine("Age Group: {0}", ageGroup .Key); //Each group has a key foreach(Student s in ageGroup) // Each group has inner collectionConsole.WriteLine("Student Name: {0}", s.StudentName);
}

可以使用foreach遍历group,每个Group包含一个key和内部的集合

IList<Student> studentList = new List<Student>() { new Student() { StudentID = 1, StudentName = "John", Age = 18 } ,new Student() { StudentID = 2, StudentName = "Steve",  Age = 21 } ,new Student() { StudentID = 3, StudentName = "Bill",  Age = 18 } ,new Student() { StudentID = 4, StudentName = "Ram" , Age = 20 } ,new Student() { StudentID = 5, StudentName = "Abram" , Age = 21 } };var groupedResult = studentList.GroupBy(s => s.Age);foreach (var ageGroup in groupedResult)
{Console.WriteLine("Age Group: {0}", ageGroup.Key);  //Each group has a key foreach(Student s in ageGroup)  //Each group has a inner collection  Console.WriteLine("Student Name: {0}", s.StudentName);
}

ToLookup和GroupBy一样,唯一不同的是GroupBy是延迟执行,而ToLookup是立即执行

IList<Student> studentList = new List<Student>() { new Student() { StudentID = 1, StudentName = "John", Age = 18 } ,new Student() { StudentID = 2, StudentName = "Steve",  Age = 21 } ,new Student() { StudentID = 3, StudentName = "Bill",  Age = 18 } ,new Student() { StudentID = 4, StudentName = "Ram" , Age = 20 } ,new Student() { StudentID = 5, StudentName = "Abram" , Age = 21 } };var lookupResult = studentList.ToLookup(s => s.age);foreach (var group in lookupResult)
{Console.WriteLine("Age Group: {0}", group.Key);  //Each group has a key foreach(Student s in group)  //Each group has a inner collection  Console.WriteLine("Student Name: {0}", s.StudentName);
}

注意:GroupBy和ToLookup返回一个集合(包含key,根据key分组的内部集合)

转载于:https://www.cnblogs.com/lanpingwang/p/6602449.html

LINQ 学习路程 -- 查询操作 GroupBy ToLookUp相关推荐

  1. LINQ 学习路程 -- 查询操作 ElementAt, ElementAtOrDefault

    Element Operators (Methods) Description ElementAt 返回指定索引的元素,如果索引超过集合长度,则抛出异常 ElementAtOrDefault 返回指定 ...

  2. LINQ 学习路程 -- 查询语法 LINQ Query Syntax

    1.查询语法 Query Syntax: from <range variable> in <IEnumerable<T> or IQueryable<T> ...

  3. Linq学习——更新数据库操作

    用LINQ to SQL建模Northwind数据库 在这之前一起学过LINQ to SQL设计器的使用,下面就使用如下的数据模型: 当使用LINQ to SQL设计器设计以上定义的五个类(Produ ...

  4. DQL是什么?DQL数据查询操作演示全流程

    DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记录.查询关键字: SELECT 在一个正常的业务系统中,查询操作的频次是要远高于增删改的,当 ...

  5. MySQL查询操作(1)

    MySQL查询操作(1) 本文以部门表.员工表和工资等级表这三张表为例,来学习MySQL 查询操作. 1 初始化三张表 这三张表的SQL文件下载地址为:https://download.csdn.ne ...

  6. LINQ:进阶 - LINQ 标准查询操作概述

    "标准查询运算符"是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> 接口或 I ...

  7. LINQ学习之旅——第二站LTQ之标准数据库操作(增查删改)

    今天要讲解主要内容是关于LINQ TO SQL中的标准数据库操作:插入(Insert).查询(Select).更新(Update)以及删除(Delete),凡是涉及到数据库方面的都会使用这些操作.而这 ...

  8. MySQL学习笔记04【数据库的查询操作、今日内容、表的约束】

    MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...

  9. MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)...

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

最新文章

  1. java正则表达式获取指定两个字符串之间内容
  2. sqlyog连接服务出现的2003和1130错误问题
  3. Python基础入门:3种字符串格式化方法教程
  4. python 读取 配置文件
  5. CodeForces - 1263A Sweet Problem(思维,水题)
  6. jQuery笔记[1]——jqGrid中实现自定义链接弹出subgrid
  7. 【笔记】跨域重定向中使用Ajax(XHR请求)导致跨域失败
  8. java检查变量是否定义_JavaScript检查变量是否存在(已定义/初始化)
  9. linux下批量下载站点内容初稿
  10. matlab实时系统时间,转--MATLAB——时间,日期及显示格式
  11. c++ memset 语言_C/C++ 中memset() 函数详解及其作用介绍
  12. BZOJ4141 THUSC2013 魔塔 贪心
  13. 微信小程序项目2(哔哩哔哩)
  14. android 加密dex,App加固(dex加密)
  15. python3实用小工具--语言翻译器(附源码)
  16. 教小师妹学多线程,看完我写的例子,脸红成那样!
  17. 只有VOB文件也可以制作成DVD——用IfoEdit建立IFO篇(最好的方法)
  18. PyQt5在已运行界面中通过Botton按钮触发添加新的Botton按钮
  19. 洛谷P1510-精卫填海(01背包)
  20. kindle看pdf的文档字体调小了

热门文章

  1. Java 树形结构数据生成--不需要顶级节点
  2. IntelliJ IDEA快捷键汇总_java
  3. tornado 异步两种实现形式 通过回调可以利用
  4. Pytorch实现MNIST(附SGD、Adam、AdaBound不同优化器下的训练比较) adabound实现
  5. PyTorch: 序列到序列模型(Seq2Seq)实现机器翻译实战
  6. 如何通过HTTP优雅调用第三方-Feign
  7. LLVM 编译器和工具链技术
  8. 模拟内存计算如何解决边缘人工智能推理的功耗挑战
  9. 情感分析:基于循环神经网络
  10. AMD Ryzen 5000‘Cezanne’APU