Linq专题之查询操作

时间:2022-03-27 20:29:08

  前面我们主要讲解的是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 子句  处理逻辑运算符,从数据源中筛选数据