测试数据:

           class Student{public string Name { get; set; }public int Score { get; set; }}List<Student> students = new List<Student>{new Student {Name="Terry", Score=50},          new Student {Name="Tom", Score=85},new Student {Name="Wade", Score=90},new Student {Name="James", Score=70},new Student {Name="Kobe", Score=90},new Student {Name="AK", Score=90},             };

1.OrderBy

说明:在查询表达式中,orderby子句可对集合按升序(ascending)或降序(descending)排序(默认的是升序)。可以指定多个排序的值,以便执行一个或多个次要排序操作。

对分数进行降序排序,然后再将分数相同的学生姓名进行升序排列(分数为主要排序,姓名为次要排序):

            var query = from student in studentsorderby student.Score descending, student.Nameselect student;foreach (var student in query){Console.WriteLine("{0}:{1}", student.Name, student.Score);//AK:90//Kobe:90//Wade:90//Tom:85//James:70//Terry:50}

 2.Group By

(1)说明:group子句返回一个 IGrouping<TKey, TElement> 对象序列,这些对象包含零个或更多个与该组的键值匹配的项。 例如,可以按照每个字符串中的第一个字母对字符串序列进行分组。 在这种情况下,第一个字母是键且具有 char 类型,并且存储在每个 IGrouping<TKey, TElement> 对象的Key属性中。

按照学生分数分组:

            var query = from student in studentsgroup student by student.Score;foreach (var studentGroup in query){//studentGroup推断为IGrouping<int,Student>类型Console.WriteLine("{0}", studentGroup.Key);//50//85//90//70}

(2)说明:由于 group 查询产生的 IGrouping<TKey, TElement> 对象实质上是列表的列表,因此必须使用嵌套的 foreach 循环来访问每一组中的各个项。 外部循环用于循环访问组键,内部循环用于循环访问组本身中的每个项。组可能具有键,但没有元素。如果您想要对每个组执行附加查询操作,则可以使用 into 上下文关键字指定一个临时标识符。 使用 into 时,必须继续编写该查询,并最终用一个 select 语句或另一个 group 子句结束该查询。

查询每个分数组中的每个学生的信息:

            var query = from student in studentsgroup student by student.Score into gselect g;foreach (var studentGroup in query){Console.WriteLine("分数组:{0}", studentGroup.Key);foreach (var student in studentGroup){Console.Write("{0}:{1},", student.Name,student.Score);}Console.WriteLine();//分组:50//Terry:50,//分组:85//Tom:85,//分组:90//Wade:90,Kobe:90,AK:90,//分组:70//James:70,}

(3)同样的,group 子句可按照任何类型进行分组,如字符串、内置数值类型、用户定义的命名类型或匿名类型。形式差不多,有需要可查阅其他资料

作者: ForEvErNoME
出处: http://www.cnblogs.com/ForEvErNoME/
欢迎转载或分享,但请务必声明文章出处。如果文章对您有帮助,希望你能 推荐 或 关注

转载于:https://www.cnblogs.com/ForEvErNoME/archive/2012/07/26/2608424.html

LINQ学习(六):OrderBy/Group By子句相关推荐

  1. Linq 学习笔记(二)

    Linq 学习笔记(二) 下面就来介绍一些查询的示例: 1.Linq查询 var racers = from r in Formula1.GetChampions() where r.Wins > ...

  2. 一起谈.NET技术,Linq学习笔记

    写在前面 其实在09年就已经学习过Linq了,并被她那优美的语法所吸引,只是现在所在的公司还在使用VS2005在.Net2.0的框架下面的开发,所以Linq也很久没有用过了,最近看部门的同事对这个有些 ...

  3. Linq学习——查询表达式

    .查询表达式关键字  关键字  功能  from  指定要查找的数据源以及范围变量,多个from子句则表示从多个数据源查找数据  select  指定查询要返回的目标数据,可以指定任何类型,甚至是匿名 ...

  4. [转]linq to sql (Group By/Having/Count/Sum/Min/Max/Avg操作符)

    本文转自:http://www.cnblogs.com/jack-liang/archive/2011/03/22/1991554.html Group By/Having操作符 适用场景:分组数据, ...

  5. linq to sql (Group By/Having/Count/Sum/Min/Max/Avg操作符)

    Group By/Having操作符 适用场景:分组数据,为我们查找数据缩小范围. 说明:分配并返回对传入参数进行分组操作后的可枚举对象.分组:延迟 1.简单形式: var q =from p in ...

  6. MySql学习(六) —— 数据库优化理论(二) —— 查询优化技术

    目录 一.子查询优化 二.视图重写 三.等价谓词重写 四.条件化简(条件优化技术) 1.条件下推 2.条件化简 五.外连接消除.嵌套连接消除.连接消除 六.数据库的约束规则与语义优化 七.非SPJ优化 ...

  7. SQL基础学习总结:5(HAVING子句的使用ORDER BY排序子句的使用)

    为聚合结果指定条件 HAVING子句 HAVING子句可以让我们筛选分组之后的各种数据,其语法结构如下: SELECT <列名1>,<列名2>,<列名3> FROM ...

  8. Apollo代码学习(六)—模型预测控制(MPC)_follow轻尘的博客-CSDN博客_mpc代码

    Apollo代码学习(六)-模型预测控制(MPC)_follow轻尘的博客-CSDN博客_mpc代码

  9. 艾伟:C#多线程学习(六) 互斥对象

    本系列文章导航 C#多线程学习(一) 多线程的相关概念 C#多线程学习(二) 如何操纵一个线程 C#多线程学习(三) 生产者和消费者 C#多线程学习(四) 多线程的自动管理(线程池) C#多线程学习( ...

最新文章

  1. delete后加 limit是个好习惯么 !
  2. LNMP_ 配置文件
  3. Windows命令计算MD5与SHA1/256值
  4. 10到十分精彩的智力题,你能过关几道?
  5. React Native之hardwareBackPress
  6. Python+OpenCV4:读写输入和输出的简单实践(图片、视频、摄像头)
  7. jmeter的如何设置headers
  8. Github代码安全监控
  9. 2019JAVA面试题精粹附答案
  10. 百度SEO全自动百度挂机循环提交工具(MIP 主动推送)泛目录专用
  11. 《让大象飞》阅读心得
  12. 音频格式简介和PCM转换成WAV
  13. JavaWeb过滤器(Filter)
  14. 顾往前行,我的前端之路系列(二)
  15. 财商教育—百万富翁的生活习惯
  16. Cesium实现雷达扫描效果
  17. android差分升级原理,BigNews Android 增量更新框架差分包升级 @codeKK c开源站
  18. 第一范式转化为第二范式_管理学发展的范式转换及其哲学基础
  19. 工程师不可不知:解决EMI之传导干扰的八大对策
  20. 缅怀我的第一台平板——Surface RT

热门文章

  1. table中head表头固定,body滚动
  2. DEDE常见问题(转)
  3. albian开发笔记五--谈缓存同步
  4. 在ubuntu10.4安装snort ACID
  5. HihoCoder 1513 : 小Hi的烦恼
  6. 第44节:Java当中的JVM
  7. Python爬虫之BeautifulSoup和requests的使用
  8. nprogress.js 头部进度条使用方法
  9. 随机数的产生可用于的场景验证码 密码
  10. eclipse的安装和用VS进行单元测试