当前位置: 首页 > news >正文

LINQ 关键字

排序

  IEnumerable<Student> studentQuery =
                        from student in students
                        where student.Scores[0] > 90
                        orderby student.Last ascending
                        select student;
ascending 升序排序,descending降序排序

分组

         var studentQuery3 =
                from student in students
                group student by student.Last[0];
  var studentQuery2 =
                from student in students
                group student by student.Last[0] into studentGroup
                orderby studentGroup.Key
                select studentGroup;

当运行此查询时,将爱那个会按照字母顺序排序。

使用let引入标识符

可以使用let关键字将任何表达式结果作为标识符引入到查询表达式。

在查询表达式中,存储子表达式的结果有时候很有用,这样可以在随后的子句中使用。可以使用let关键字完成这一工作。该关键字可以创建一个新的范围变量,并且用你提供的表达式的结果初始化该变量。一旦用值初始化了该范围变量,他就不能用于存储其他值。

可以通过存储表达式的结果提高性能。

           var studentQuery5 =
                from student in students
                let totalScore = student.Scores[0] + student.Scores[1] 
                            + student.Scores[2] + student.Scores[3]
                where totalScore / 4 < student.Scores[0]
                select student.Last + "  " + student.First;
            foreach (string s in studentQuery5)
            {
                Console.WriteLine(s);
            }

在查询表达式中使用方法语法

           var studentQuery6 =
                from student in students
                let totalScore = student.Scores[0] + student.Scores[1] +
                                student.Scores[2] + student.Scores[3]
                select totalScore;
            double averageScore = studentQuery6.Average();
            Console.WriteLine("classs average score = {0}", averageScore);

通过average()方法计算班级平均分。

在select 子句中转换或投影

            var studentQuery7 =
                from student in students
                let x = student.Scores[0] + student.Scores[1] +
                        student.Scores[2] + student.Scores[3]
                where x > averageScore
                select new { id = student.ID, score = x };

            foreach (var item in studentQuery7)
            {
                Console.WriteLine("Student ID :{0},Score:{1}",item.id,item.score);
            }

转载于:https://www.cnblogs.com/RealAlex/archive/2013/03/17/2964652.html

相关文章:

  • Linux 一次性杀死用户所有进程
  • 解决websphere6.1必须为元素类型web-app声明属性version
  • 将32位无符号整数表示的时间信号转化为习惯的形式
  • 财经法规与会计职业道德1
  • 截取字符串显示
  • Android TextView内容过长加省略号,点击显示全部内容
  • 一直令我纠结的问题,关于“线程”与“阻塞”
  • 随记:Linux下apache2.4.4的安装
  • 2012年最具影响力路由器配置精品文章荟萃【108篇】
  • 运算符重载03 -- = 和!
  • Linux下git安装
  • prototype.js 让你更深入的了解javascript的面向对象特性
  • SQL语句decode函数
  • ARM中断基础知识
  • java.lang.IllegalStateException: No activity 错误...
  • [PHP内核探索]PHP中的哈希表
  • 08.Android之View事件问题
  • codis proxy处理流程
  • docker-consul
  • es6(二):字符串的扩展
  • express如何解决request entity too large问题
  • Invalidate和postInvalidate的区别
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • js算法-归并排序(merge_sort)
  • Netty源码解析1-Buffer
  • nodejs实现webservice问题总结
  • Swoft 源码剖析 - 代码自动更新机制
  • 观察者模式实现非直接耦合
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 驱动程序原理
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 优化 Vue 项目编译文件大小
  • 做一名精致的JavaScripter 01:JavaScript简介
  • 《码出高效》学习笔记与书中错误记录
  • Linux权限管理(week1_day5)--技术流ken
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​LeetCode解法汇总518. 零钱兑换 II
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (11)MSP430F5529 定时器B
  • (4)STL算法之比较
  • (C语言)球球大作战
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (LeetCode) T14. Longest Common Prefix
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)mysql使用Navicat 导出和导入数据库
  • ./configure,make,make install的作用
  • .apk文件,IIS不支持下载解决
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .net 调用php,php 调用.net com组件 --
  • .NET 设计一套高性能的弱事件机制
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)