LINQ 学习路程 -- 查询操作 GroupBy ToLookUp
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相关推荐
- LINQ 学习路程 -- 查询操作 ElementAt, ElementAtOrDefault
Element Operators (Methods) Description ElementAt 返回指定索引的元素,如果索引超过集合长度,则抛出异常 ElementAtOrDefault 返回指定 ...
- LINQ 学习路程 -- 查询语法 LINQ Query Syntax
1.查询语法 Query Syntax: from <range variable> in <IEnumerable<T> or IQueryable<T> ...
- Linq学习——更新数据库操作
用LINQ to SQL建模Northwind数据库 在这之前一起学过LINQ to SQL设计器的使用,下面就使用如下的数据模型: 当使用LINQ to SQL设计器设计以上定义的五个类(Produ ...
- DQL是什么?DQL数据查询操作演示全流程
DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记录.查询关键字: SELECT 在一个正常的业务系统中,查询操作的频次是要远高于增删改的,当 ...
- MySQL查询操作(1)
MySQL查询操作(1) 本文以部门表.员工表和工资等级表这三张表为例,来学习MySQL 查询操作. 1 初始化三张表 这三张表的SQL文件下载地址为:https://download.csdn.ne ...
- LINQ:进阶 - LINQ 标准查询操作概述
"标准查询运算符"是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> 接口或 I ...
- LINQ学习之旅——第二站LTQ之标准数据库操作(增查删改)
今天要讲解主要内容是关于LINQ TO SQL中的标准数据库操作:插入(Insert).查询(Select).更新(Update)以及删除(Delete),凡是涉及到数据库方面的都会使用这些操作.而这 ...
- MySQL学习笔记04【数据库的查询操作、今日内容、表的约束】
MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...
- MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)...
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
最新文章
- java正则表达式获取指定两个字符串之间内容
- sqlyog连接服务出现的2003和1130错误问题
- Python基础入门:3种字符串格式化方法教程
- python 读取 配置文件
- CodeForces - 1263A Sweet Problem(思维,水题)
- jQuery笔记[1]——jqGrid中实现自定义链接弹出subgrid
- 【笔记】跨域重定向中使用Ajax(XHR请求)导致跨域失败
- java检查变量是否定义_JavaScript检查变量是否存在(已定义/初始化)
- linux下批量下载站点内容初稿
- matlab实时系统时间,转--MATLAB——时间,日期及显示格式
- c++ memset 语言_C/C++ 中memset() 函数详解及其作用介绍
- BZOJ4141 THUSC2013 魔塔 贪心
- 微信小程序项目2(哔哩哔哩)
- android 加密dex,App加固(dex加密)
- python3实用小工具--语言翻译器(附源码)
- 教小师妹学多线程,看完我写的例子,脸红成那样!
- 只有VOB文件也可以制作成DVD——用IfoEdit建立IFO篇(最好的方法)
- PyQt5在已运行界面中通过Botton按钮触发添加新的Botton按钮
- 洛谷P1510-精卫填海(01背包)
- kindle看pdf的文档字体调小了
热门文章
- Java 树形结构数据生成--不需要顶级节点
- IntelliJ IDEA快捷键汇总_java
- tornado 异步两种实现形式 通过回调可以利用
- Pytorch实现MNIST(附SGD、Adam、AdaBound不同优化器下的训练比较) adabound实现
- PyTorch: 序列到序列模型(Seq2Seq)实现机器翻译实战
- 如何通过HTTP优雅调用第三方-Feign
- LLVM 编译器和工具链技术
- 模拟内存计算如何解决边缘人工智能推理的功耗挑战
- 情感分析:基于循环神经网络
- AMD Ryzen 5000‘Cezanne’APU