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 ...
随机推荐
- 【hdu 3537】Daizhenyang's Coin
Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s) ...
- Erlang 位串和二进制数据
http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=25876834&id=3300393 因为在本人工作中,服务端Erla ...
- java中的方法返回值使用泛型,实现灵活的返回值类型
痛点: 使用Mybatis框架的时候,想封装一个底层JDBC控制器,用于提供和Mybatis交互的增删改查接口(公用的接口),但由于公用的查询方法可能是用户自定义的任意一个和表对应的java ...
- 如何在CSDN博客自定义栏目中添加“给我写信”
在"自定义栏目"中添加"连接"(将自己的微博,QQ空间和CSDN博客关联起来)很多人都做过.但是添加"给我写信"这个功能,用的好像不太多.此 ...
- sparksql dataset
java /** *2.0之后使用sparksession即可,不需要再去创建sqlcontext *@author Tele * */ public class Demo { private sta ...
- maven Java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
如果你可以确认你的maven Dependencies中已经导入了如下的jar包,那么你就要检查下Deployment Assembly 选中项目 alt+enter,然后查看maven依赖有没有被添 ...
- Java Service Wrapper 使用(windows)
1 简介 最近项目中需要做一个Windows系统服务,记录一下使用过程. Java Service Wrapper 可以将Java程序包装成系统服务,这样就可以随着系统的运行而自动运行.J ...
- HDU 3605Escape(缩点+网络流之最大流)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3605 本来打算昨天写两道题的,结果这个题卡住了,最后才发现是最后的推断条件出错了,推断满流的条件应该是 ...
- hdu3698 Let the light guide us dp+线段树优化
http://acm.hdu.edu.cn/showproblem.php?pid=3698 Let the light guide us Time Limit: 5000/2000 MS (Java ...
- cordova通过指纹插件进行指纹验证
原文:cordova通过指纹插件进行指纹验证 版权声明:本文为博主原创文章,转载须注明出处,博客地址:https://blog.csdn.net/wx13227855087 https://blog. ...