前面我们主要讲解的是Linq的查询表达式,Linq不但提供了一些基本的查询表达式,还提供了数十个查询操作。比如筛选操作、聚合操作、投影操作等等。通过这些查询操作可以更方便的对数据源进行处理。

  Linq提供了数十个查询操作,大多数的操作都是针对实现了IQueryable<T>和IEnumerbale<T>接口的序列。

序号     查询操作           对应的查询表达式                 说明                                                                                                                                          
1 Aggregate                                                                                 自定义的聚合运算
2 All   检测序列中的所有元素是否都满足指定条件
3 Any   检测序列中是否存在满足指定条件的元素
4 Average   计算序列中所有元素的平均值
5 Cast   将序列中的元素类型转换成指定的类型
6 Contact   将一个序列的元素全部追加到另一个序列,并构成一个新的序列
7 Contains   检测序列中是否存在指定的元素
8 Count   计算序列中的所有元素的个数或者计算满足一定条件的元素的个数
9 DefaultIfEmpty   返回IEnumerable<T>类型的序列,如果序列为空,则返回只包含一个元素的序列(值为默认值或者指定的值)
10 Distinct   可将数据源中重复的元素去除返回一个新序列,还可以指定一个比较器来比较两个元素是否相等
11  Element                           返回集合中指定索引处的元素
12 ElementAtOrDefault   返回集合中指定索引处的元素,如果索引超出范围则返回默认值
13 Empty   返回IEnumerable<T>类型的空序列
14 EqualAll/SequenceEqual   判断两个序列是否相等
15 Except   计算两个集合的差集(由属于一个集合而不属于另一个集合的元素组成的集合)
16 First   返回集合的第一个元素或者返回满足条件的第一个元素
17 FirstOrDefault   返回集合的第一个元素或者返回满足条件的第一个元素,如果不存在满足条件的元素则返回默认值。
18 GroupBy Group子句 对序列中的元素进行分组
19 GroupJoin Join子句

产生分层数据结构,将第一个序列中的所有元素与第二个序列中的相关元素做匹配,在查询结果中,第一个集合中的元素都会出现,如果第一个序列中元素与第二个序列中的相关元素

匹配,则使用找到的元素否则为空

20 Intersect   可以计算两个集合的交集,即新集合中的元素既存在与第一个集合也存在与第二个集合
21 Join Join子句 和sqlserver中inner join类似,要求元素的联接关系必须同时满足被联接的两个数据源
22 Last   返回集合的最后一个元素,或者返回满足指定条件的最后一个元素
23 LastOrDefault   返回集合的最后一个元素,或者返回满足指定条件的最后一个元素,如果不存在该元素,返回默认值
24 LongCount   计算集合中元素的数量,或者满足指定条件的元素的数量,一般用来计算大型集合的元素数量
25 Max   计算序列中元素的最大值
26 Min   计算序列中元素的最小值
27 OfType   从序列中筛选出指定类型的元素,并构建为一个序列
28 OrderBy order by 子句 根据关键字对序列中的元素进行升序排序
29 OrderByDescending order by 子句 根据关键字对序列中的元素进行降序排序
30 Range   返回指定范围的数字序列
31 Repeat   返回IEnum<T>类型的包含重复值的序列
32 Reverse   将序列中的元素进行反转
33 Select Select子句 将数据源中的元素投射到新的序列中并指定元素的类型和表现形式,
34 SelectMany 多个from子句 将数据源中的元素投射到新的序列中并指定元素的类型和表现形式,但是SelectMany可以将一个函数应用到多个序列之上,并将结果合并为一个序列
35 Single   返回集合中唯一一个元素或者返回满足指定条件的唯一一个元素
36 SingleOrDefault   返回集合中唯一一个元素或者返回满足指定条件的唯一一个元素,如果不存在该元素则返回默认值
37 Skip   跳过序列中指定数量的元素,然后返回由剩余元素组成的序列
38 SkipWhile   跳过序列中指定数量的元素,然后返回由剩余元素组成的序列
39 Sum   计算序列中所有元素的和
40 Take   从数据源的开头获取指定数量的元素,然后返回这些元素组成的新序列
41 TakeWhile   从数据源的开头获取指定数量的元素,然后返回这些元素组成的新序列
42  ThenBy  order by 子句  根据次要关键字对序列进行升序排列
43  ThenByDescending  order by 子句  根据次要关键字对序列进行升序排列
44  ToArray    将IEnumerable<T>类型的序列转换为T[]类型的数组
45  ToDictionary     将IEnumerable<T>类型的序列转换为Dictionary<TKey,Tvalue>类型的数组
46  ToList     将IEnumerable<T>类型的序列转换为List<T>类型的数组
47  ToLookUp    按照键值将序列中的元素放入一对多的字典序列LookUp<TKey,TValue>
48  Union    计算两个集合的并集,由属于第一个集合或者属于第二个集合的元素组成的序列
49  Where  Where 子句  处理逻辑运算符,从数据源中筛选数据

Linq专题之查询操作的更多相关文章

  1. LINQ 学习路程 -- 查询操作 Expression Tree

    表达式树就像是树形的数据结构,表达式树中的每一个节点都是表达式, 表达式树可以表示一个数学公式如:x<y.x.<.y都是一个表达式,并构成树形的数据结构 表达式树使lambda表达式的结构 ...

  2. LINQ 学习路程 -- 查询操作 OrderBy & OrderByDescending

    Sorting Operator Description OrderBy 通过给定的字段进行升序 降序 排序 OrderByDescending 通过给定字段进行降序排序,仅在方法查询中使用 Then ...

  3. LINQ 学习路程 -- 查询操作 Deferred Execution of LINQ Query 延迟执行

    延迟执行是指一个表达式的值延迟获取,知道它的值真正用到. 当你用foreach循环时,表达式才真正的执行. 延迟执行有个最重要的好处:它总是给你最新的数据 实现延迟运行 你可以使用yield关键字实现 ...

  4. LINQ 学习路程 -- 查询操作 Join

    Join操作是将两个集合联合 Joining Operators Usage Join 将两个序列连接并返回结果集 GroupJoin 根据key将两个序列连接返回,像是SQL中的Left Join ...

  5. LINQ 学习路程 -- 查询操作 where

    1.where Filtering Operators Description Where Returns values from the collection based on a predicat ...

  6. LINQ 学习路程 -- 查询操作 GroupBy ToLookUp

    Grouping Operators Description GroupBy GroupBy操作返回根据一些键值进行分组,每组代表IGrouping<TKey,TElement>对象 To ...

  7. LINQ 学习路程 -- 查询操作 let into关键字

    IList<Student> studentList = new List<Student>() { , StudentName = } , , StudentName = } ...

  8. LINQ 学习路程 -- 查询操作 Aggregate

    聚合操作执行数学的运算,如平均数.合计.总数.最大值.最小值 Method Description Aggregate 在集合上执行自定义聚集操作 Average 求平均数 Count 求集合的总数 ...

  9. LINQ 学习路程 -- 查询操作 Select, SelectMany

    IList<Student> studentList = new List<Student>() { , StudentName = "John" }, , ...

随机推荐

  1. 十大免费教程资源帮助新手快速学习JavaScript

    “JavaScript”的名头相信大家肯定是耳熟能详,但只有一小部分人群了解它的使用与应用程序构建方式.这“一小部分”人指的当然是技术过硬的有为青年.网络程序员以及IT专业人员.但对于一位新手或者说外 ...

  2. 解决genemotion模拟器冲突导致的Android Studio无法启动ADB的问题

    首先命令行下运行 adb nodaemon server ./adb nodaemon server (Mac OSX) 如果出现错误: error: could not install *smart ...

  3. EventBus 3.0使用

    在没用eventBus之前一直用Android广播方式通知消息更新UI 广播写法 首先发送广播通知 Intent intent = new Intent(); intent.setAction(&qu ...

  4. python数据结构之二叉树遍历的实现

    本篇是实现二叉树的三种遍历,先序遍历,中序遍历,后序遍历 #!/usr/bin/python # -*- coding: utf-8 -*- class TreeNode(object): def _ ...

  5. ubuntu 12 JDK 编译

    下载openjdk源码 http://jdk7.java.net/source.html 安装Ubuntu上面的依赖包: .参考原书 环境变量配置: .去www.hzbook.com上面将深入理解ja ...

  6. 使用Condition实现多线程之间调用(生产消费模式)

    一,object 类的wait(),notify()和notifyAll() Java 线程类也是一个object 类,它的实例都继承自java.lang.Thread 或其子类.wait(),not ...

  7. boost 1.56.0 编译及使用

    boost的编译和使用,经过搜集资料和总结,记录成文.感谢文后所列参考资料的作者. 1 下载 地址:http://sourceforge.net/projects/boost/files/boost/ ...

  8. Android-NDK编译:cocos2d-x(三) eclipse 导入工程

    NDK 编译后,用eclipse导入cocos2d-x工程 菜单[File]-->[New]-->[Project] ,弹出New Project 对话框 窗口下方 选 [Android] ...

  9. 牢骚与javascript中的this

    最近在看关于拖延症的一本书<拖拉一点也无妨>,后面得出结论是自己写博客大部分处于两种状态,心情很好和心情很不好的时候.因为正常状态下感觉写博客吧,是件很麻烦的事情,不如去看看电影看看漫画啥 ...

  10. [转]mac 10.9.4下配置apache

    出处:http://yjmyzz.cnblogs.com mac 10.9.x已经自带了apache,可按如下步骤开启: 1.启动 sudo apachectl start 启动后,访问 http:/ ...