LINQ查询表达式---------group子句
LINQ查询表达式---------group子句
LINQ表达式必须以from子句开头,以select或group子句结束。使用guoup子句来返回元素分组后的结果。group 子句返回一个 IGrouping<TKey, TElement> 对象序列(实质上是列表的列表)。TKey是键的对象类型,在用于group子句的时候,它一般用于存储分组的键值;TElement是指的对象类型,用于存储分组的结果。
class Program
{
public class PerInfo
{
public int Id
{
get;
set;
}
public string Name
{
get;
set;
}
public int Age
{
get;
set;
}
} static void Main(string[] args)
{
List<PerInfo> perInfos = new List<PerInfo>
{
new PerInfo{Id = , Name = "小日", Age = },
new PerInfo{Id = , Name = "小日月", Age = },
new PerInfo{Id = , Name = "张三四", Age = },
new PerInfo{Id = , Name = "李四五六七", Age = }
}; //使用布尔值作为键将结果划分成两个组
//以‘17’为界限进行分组,大于等于17的一组,小于17的一组
var booleanQuery1 = from p in perInfos
group p by p.Age >= ; Console.WriteLine("Query1:");
foreach (var key in booleanQuery1)
{
Console.WriteLine(" 分组键{0},{1}", key.Key, key.Key == true ? "Age大于等于17" : "Age小于17");
foreach (var item in key)
{
Console.WriteLine(" {0} {1}", item.Name, item.Age);
}
} //使用字符串作为键将结果划分为两个组
//Name第一个字相同的为一组
var booleanQuery2 = from p in perInfos
group p by p.Name[]; Console.WriteLine("\nQuery2:");
foreach (var key in booleanQuery2)
{
Console.WriteLine(" 分组键{0}", key.Key);
foreach (var item in key)
{
Console.WriteLine(" {0} {1}", item.Name, item.Age);
}
} //group by into
//into 关键字来启用临时标识符
var booleanQuery3 = from p in perInfos
let lenName = p.Name.Length //let子句用来保存表达式的结果
where lenName > //只筛选出名字长度大于2的
group p by lenName into g//使用 into 关键字来启用临时标识符 g,该标识符具有推断类型 IGroupi
where g.Count() > //筛选出每组数量大于1 的组
select g;
Console.WriteLine("\nQuery3:");
foreach (var key in booleanQuery3)
{
Console.WriteLine(" 分组键{0}", key.Key); //这里的分组键是名字的长度
foreach (var item in key)
{
Console.WriteLine(" {0} {1}", item.Name, item.Age);
}
} Console.ReadLine();
}
}
输出结果:
Query1:
分组键False,Age小于17
小日 15
分组键True,Age大于等于17
小日月 17
张三四 21
李四五六七 23 Query2:
分组键小
小日 15
小日月 17
分组键张
张三四 21
分组键李
李四五六七 23 Query3:
分组键3
小日月 17
张三四 21
LINQ查询表达式---------group子句的更多相关文章
- LINQ查询表达式---------orderby子句
LINQ查询表达式---------orderby子句 LINQ可以按元素的一个或多个属性对元素进行排序. class Program { public class PerInfo { public ...
- LINQ查询表达式---------let子句
LINQ查询表达式---------let子句 let子句创建一个范围变量来存储结果,变量被创建后,不能修改或把其他表达式的结果重新赋值给它.此范围变量可以再后续的LINQ子句中使用. class P ...
- LINQ查询表达式---------join子句
LINQ查询表达式---------join子句 join 子句接受两个源序列作为输入. 每个序列中的元素都必须是可以与另一个序列中的相应属性进行比较的属性,或者包含一个这样的属性. join子句使用 ...
- LINQ查询表达式---------select子句
LINQ查询表达式---------select子句 1.1常见的select子句查询 class Program { public class PerInfo { public int Id { g ...
- LINQ查询表达式---------where子句
LINQ查询表达式---------where子句 where 子句用在查询表达式中,用于指定将在查询表达式中返回数据源中的哪些元素. 它将一个布尔条件(“谓词”)应用于每个源元素(由范围变量引用), ...
- LINQ查询表达式---------from子句
LINQ查询表达式---------from子句 LINQ的查询由3基本部分组成:获取数据源,创建查询,执行查询. //1.获取数据源 List<, , , , , }; //创建查询 var ...
- 2.3 LINQ查询表达式中 使用select子句 指定目标数据
本篇讲解LINQ查询的三种形式: 查询对象 自定义查询对象某个属性 查询匿名类型结果 [1.查询结果返回集合元素] 在LINQ查询中,select子句和from子句都是必备子句.LINQ查询表达式必须 ...
- 读书笔记 C# Linq查询之group关键字浅析
在C#中,自从有了Linq查询表达式后,程序员对可被迭代的序列或列表执行一系列的筛选.排序.过滤.分组.查询等操作.本文章所要讲述的是group关键字. Linq查询表达式,是以from关键字开头,以 ...
- LINQ查询表达式---------into
LINQ查询表达式---------into into 上下文关键字创建一个临时标识符,以便将 group.join 或 select 子句的结果存储到新的标识符 class Program { pu ...
随机推荐
- Redis Service
https://raw.githubusercontent.com/MSOpenTech/redis/3.0/Windows%20Service%20Documentation.md
- 温故而知新-String类
String不算是一种类型,而算是一个类.就是说String不仅能够表示string类型,另一些自带的方法能够调用.温故而知新.如今给大家总结了String类应该注意的地方. (1)"==& ...
- 雷观(十):管理自己的任务列表(TodoList)很重要
由幼年,到青年,再到成年,你会发现自己有越来越多的事情要做.参加工作后,很可能要在多个战线上同时忙碌. 最常见的有,工作(可能会加班加点).爱情(不少人忙着恋爱,需要花费很多心思).个人娱乐(玩游戏看 ...
- Ubuntu安装编译OpenCV一键脚本(带ffmpeg)
1.切换到用户文件夹 cd ~ 2.新建一个文件.命名为opencv.sh 脚本例如以下: version="$(wget -q -O - http://sourceforge.net/pr ...
- 解析字典包含关键字比如ID,description等,MJExtension 框架 不能直接设置变量与其同名。
@property (nonatomic,strong) NSString *descrip; //设置变量名 _DataReceived=(NSMutableArray *)[HZnewsmess ...
- Spring Boot 定制与优化内置的Tomcat容器
1.Spring Boot定制与优化内置Tomcat容器. > 内置的容器有三个分别是Undertow.Jetty.Tomcat,Spring Boot 对这三个容器分别进行了实现,它们上层接口 ...
- Smart internet of things services
A method and apparatus enable Internet of Things (IoT) services based on a SMART IoT architecture by ...
- FileReader采用的默认编码
很久以前听教学视频,里面讲到Java采用的默认编码是ISO-8859-1,一直记着. 但是最近重新看IO流的时候,惊讶地发现,在不指定字符编码的情况下,FileReader居然可以读取内容为中文的文本 ...
- 半监督学习(semi-supervised learning)
P(x)P(x,y)}⇒P(y|x) 自 P(x) 生成的无标签样本: 自 P(x,y) 生成的标记样本:
- Enabling granular discretionary access control for data stored in a cloud computing environment
Enabling discretionary data access control in a cloud computing environment can begin with the obtai ...