标准查询运算符定义在 System.Linq.Enumerable 类的 50 多个为 IEnumerable<T> 准备的扩展方法,换句话说,IEnumerable<T> 上的每一个方法都是一个标准查询运算符,这些方法用来对操作的集合进行查询筛选。

标准查询运算符提供了包括筛选、投影、聚合、排序等功能在内的查询功能。

实例如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApplication1
{class Program{public static List<User> InitListData(){return new List<User>(){new User { Id = 1, Name = "凌霜残雪1", Age = 21 },new User { Id = 2, Name = "凌霜残雪2", Age = 22 },new User { Id = 3, Name = "凌霜残雪3", Age = 23 },new User { Id = 4, Name = "凌霜残雪4", Age = 24 },new User { Id = 5, Name = "凌霜残雪5", Age = 25 },new User { Id = 6, Name = "凌霜残雪6", Age = 26 },new User { Id = 7, Name = "凌霜残雪7", Age = 27 },new User { Id = 8, Name = "凌霜残雪8", Age = 28 },new User { Id = 9, Name = "凌霜残雪", Age = 29 },new User { Id = 10, Name = "凌霜残雪10", Age = 36 },new User { Id = 11, Name = "凌霜残雪11", Age = 33 }};}static void Main(string[] args){var list = InitListData();//var result = list.Where(x => x.Age >= 30).ToList();//result.ForEach(r => Console.WriteLine(string.Format("{0},{1},{2}", r.Id, r.Name, r.Age)));var result = list.Where(x => x.Age >= 30).Select(s => s.Name).ToList();result.ForEach(x => Console.WriteLine(x));Console.ReadLine();}}class User{public int Id { get; set; }public string Name { get; set; }public int Age { get; set; }}
}

筛选集合 Where

Where 方法为我们提供了一个集合的筛选功能,但需要一个带 bool 返回值的“筛选器”(匿名方法、委托、Lambda表达式均可),从而表明集合中某个元素是否应该被返回。

var list = InitListData();
var result = list.Where(x => x.Age >= 30).ToList();
result.Foreach(r=>Console.WriteLine(string.Format("{0},{1},{2}", r.Id, r.Name, r.Age)))
Console.ReadLine();

运行结果:

查询投射 Select:

返回对象集合 IEnumerable<T>Select()。返回年龄大于30 岁的人的名字代码如下:

 var result = list.Where(x => x.Age >= 30).Select(s => s.Name).ToList();result.ForEach(x => Console.WriteLine(x));

运行结果如下:

统计数量 int Count()

 int num = list.Where(x => x.Age >= 30).Count();

结果为 2.

多条件排序:OrderBy().ThenBy().ThenBy()

list.OrderBy(x=>x.Age).OrderBy(x=>x.Id)

集合连接 Join()

新建一个 Student 类,并初始化数据。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApplication1
{class Program{public static List<User> InitListData(){return new List<User>(){new User { Id = 1, Name = "凌霜残雪1", Age = 21 },new User { Id = 2, Name = "凌霜残雪2", Age = 22 },new User { Id = 3, Name = "凌霜残雪3", Age = 23 },new User { Id = 4, Name = "凌霜残雪4", Age = 24 },new User { Id = 5, Name = "凌霜残雪5", Age = 25 },new User { Id = 6, Name = "凌霜残雪6", Age = 26 },new User { Id = 7, Name = "凌霜残雪7", Age = 27 },new User { Id = 8, Name = "凌霜残雪8", Age = 28 },new User { Id = 9, Name = "凌霜残雪", Age = 29 },new User { Id = 10, Name = "凌霜残雪10", Age = 36 },new User { Id = 11, Name = "凌霜残雪11", Age = 33 }};}static void Main(string[] args){List<Student> lstStu = new List<Student>(){new Student { Id = 1, userID = 1, ClassName = "一班" },new Student { Id = 2, userID = 2, ClassName =  "一班" },new Student { Id = 3, userID = 3, ClassName =  "一班" },new Student { Id = 4, userID = 4, ClassName =  "一班" },new Student { Id = 5, userID = 5, ClassName =  "一班" },new Student { Id = 6, userID = 6, ClassName =  "一班" },new Student { Id = 7, userID = 7, ClassName =  "一班" },new Student { Id = 8, userID = 8, ClassName =  "一班" },new Student { Id = 9, userID = 9, ClassName =  "一班" },new Student { Id = 10, userID = 10, ClassName =  "一班" },new Student { Id = 11, userID = 11, ClassName =  "一班" }};var list = InitListData();//var result = list.Where(x => x.Age >= 30).ToList();//result.ForEach(r => Console.WriteLine(string.Format("{0},{1},{2}", r.Id, r.Name, r.Age)));//var result = list.Where(x => x.Age >= 30).Select(s => s.Name).ToList();//result.ForEach(x => Console.WriteLine(x));int num = list.Where(x => x.Age >= 30).Count();var result1 = list.Join(lstStu, u => u.Id, p => p.userID, (u, p) => new { userID = u.Id, Name = u.Name, ClassName = p.ClassName });foreach (var item in result1){Console.WriteLine(item);}Console.WriteLine(num);Console.ReadLine();}}class User{public int Id { get; set; }public string Name { get; set; }public int Age { get; set; }}class Student{public int Id { get; set; }public int userID { get; set; }public string ClassName { get; set; }}
}

运行结果如下:

标准查询运算符(SQO)相关推荐

  1. .NET中那些所谓的新语法之四:标准查询运算符与LINQ

    开篇:在上一篇中,我们了解了预定义委托与Lambda表达式等所谓的新语法,这一篇我们继续征程,看看标准查询运算符和LINQ.标准查询运算符是定义在System.Linq.Enumerable类中的50 ...

  2. LINQ标准查询操作符

    本文基于.NET Framework 2.0编写 本文PDF下载 推荐大家下载本文的PDF进行阅读,可以方便的使用书签来阅读各个方法,而且代码中的关键字是高亮显示的. 转载请注明出处. 一.投影操作符 ...

  3. NHibernate3剖析:Query篇之NHibernate.Linq标准查询

    本节内容 系列引入 NHibernate.Linq概述 标准查询运算符 结语 系列引入 NHibernate3.0剖析系列分别从Configuration篇.Mapping篇.Query篇.Sessi ...

  4. 一起谈.NET技术,NHibernate3.0剖析:Query篇之NHibernate.Linq标准查询

    系列引入 NHibernate3.0剖析系列分别从Configuration篇.Mapping篇.Query篇.Session策略篇.应用篇等方面全面揭示NHibernate3.0新特性和应用及其各种 ...

  5. LINQ:进阶 - LINQ 标准查询操作概述

    "标准查询运算符"是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> 接口或 I ...

  6. NHibernate3.0剖析:Query篇之NHibernate.Linq标准查询

    系列引入 NHibernate3.0剖析系列分别从Configuration篇.Mapping篇.Query篇.Session策略篇.应用篇等方面全面揭示NHibernate3.0新特性和应用及其各种 ...

  7. 标准查询分析器:Solr的默认查询解析器也称为“Lucene”解析器。

    标准查询分析器:Solr的默认查询解析器也称为"Lucene"解析器. 标准查询解析器的主要优点是,它支持一种健壮且相当直观的语法,允许您创建各种结构化查询.最大的缺点是,与设计为 ...

  8. C 标准转换运算符const_cast

    C++标准转换运算符const_cast 前面讲了C++继承并扩展C语言的传统类型转换方式,最后留下了一些关于指针和引用上的转换问题,没有做详细地讲述.C++相比于C是一门面向对象的语言,面向对象最大 ...

  9. C++标准转换运算符static_cast

    C++标准转换运算符static_cast static_cast <new_type> (expression) 虽然const_cast是用来去除变量的const限定,但是static ...

最新文章

  1. R语言dplyr包all_equal函数检查多个dataframe是否相同实战
  2. eclipse 将javaWeb项目转化成maven项目
  3. C++ Primer 5th笔记(chap 16 模板和泛型编程)重载模板和类型转换
  4. CentOS6部署phpmyadmin;部署Discuz;部署phpwind;部署phpBB
  5. angular是MVC模式还是MVVM架构模式
  6. 如何打包部署 Spring Boot 项⽬
  7. 西北大学调剂计算机,西北大学信息科学与技术学院2020年硕士考研预调剂公告...
  8. 【网络安全工程师面试合集】—邮件协议是如何被安全人员利用的?
  9. RJ-45接口信号定义
  10. 静态密码已经OUT 探索身份验证新方式
  11. 从零开始学数据分析之——《微积分》第一章 函数与极限
  12. 安装linux时找不到硬盘,关于安装LINUX时找不到硬盘问题解决
  13. echart.js给series,xAxis中的data动态赋值(三种方式)
  14. 关于芯片最高工作频率的计算
  15. 三方协议、报到证(派遣证)、干部身份
  16. yahoo邮箱停止服务器,国内@yahoo.com邮箱用户不能登录的几个解决方案
  17. 修改Win10系统文件夹C:\Users\下用户名为中文方法
  18. 快手第三季营收231亿:同比增13% 期内亏损27亿
  19. ArduPilot 开发环境安装
  20. 程序员github头像_给新程序员的5个GitHub技巧

热门文章

  1. Nestlé Skin Health的医疗解决方案公司Galderma发布nemolizumab治疗中重度异位性皮炎2b期研究阳性结果
  2. python人名最多统计_Python统计字符串中出现次数最多的人名
  3. 解决Idea只能用bat文件打开不能用exe打开问题
  4. 四川计算机二级时间安排,2020年3月四川计算机二级考试时间
  5. 吐槽一下一些垃圾网站
  6. bnuoj 44359 快来买肉松饼
  7. 数组如何定义和初始化?
  8. 为什么PHP在很多公司遭到弃用?
  9. 乐高幻影忍者推出十周年复刻经典套装;炸鸡大师Popeyes开设首家南京旗舰店 | 美通企业日报...
  10. 卧槽,我不要当一个印度程序员!