Linq专题之查询操作

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

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

LINQ 学习路程 -- 查询操作 OrderBy &amp; OrderByDescending

Sorting Operator Description OrderBy 通过给定的字段进行升序 降序 排序 OrderByDescending 通过给定字段进行降序排序,仅在方法查询中使用 ThenBy 第二级升序排序,仅在方法查询中使用 ThenByDescending 第二级降序排序,仅在方法查询中使用 Reverse 反转集合,仅在方法查询中使用 IList<Student> studentList = new List<Student>() { new Student()

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

表达式树就像是树形的数据结构,表达式树中的每一个节点都是表达式, 表达式树可以表示一个数学公式如:x<y.x.<.y都是一个表达式,并构成树形的数据结构 表达式树使lambda表达式的结构变得透明清楚, Expression<Func<Student, bool>> isTeenAgerExpr = s => s.age > 12 && s.age < 20; 编译器将上面的表达式翻译成下面的表达式树 Expression.Lambda

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

1.where Filtering Operators Description Where Returns values from the collection based on a predicate function OfType Returns values from the collection based on a specified type. However, it will depend on their ability to cast to a specified type.

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

延迟执行是指一个表达式的值延迟获取,知道它的值真正用到. 当你用foreach循环时,表达式才真正的执行. 延迟执行有个最重要的好处:它总是给你最新的数据 实现延迟运行 你可以使用yield关键字实现延迟加载 public static class EnumerableExtensionMethods { public static IEnumerable<Student> GetTeenAgerStudents(this IEnumerable<Student> source)

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

Join操作是将两个集合联合 Joining Operators Usage Join 将两个序列连接并返回结果集 GroupJoin 根据key将两个序列连接返回,像是SQL中的Left Join Join操作两个集合,inner collection 和 outer collection 它返回一个集合(包含两个集合根据特定条件结合的所有元素),和SQL中的inner join一样 public static IEnumerable<TResult> Join<TOuter, TIn

LINQ 学习路程 -- 查询操作 OfType

OfType操作根据集合中的元素是否是给定的类型进行筛选 IList mixedList = new ArrayList(); mixedList.Add(0); mixedList.Add("One"); mixedList.Add("Two"); mixedList.Add(3); mixedList.Add(new Student() { StudentID = 1, StudentName = "Bill" }); var stringR

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

IList<Student> studentList = new List<Student>() { new Student() { StudentID = 1, StudentName = "John", Age = 18 } , new Student() { StudentID = 2, StudentName = "Steve", Age = 21 } , new Student() { StudentID = 3, StudentN

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

Grouping Operators Description GroupBy GroupBy操作返回根据一些键值进行分组,每组代表IGrouping<TKey,TElement>对象 ToLookup ToLookup is the same as GroupBy; the only difference is the execution of GroupBy is deferred whereas ToLookup execution is immediate. IList<Stude

LINQ 学习路程 -- 查询操作 ThenBy &amp; ThenByDescending

IList<Student> studentList = new List<Student>() { new Student() { StudentID = 1, StudentName = "John", Age = 18 } , new Student() { StudentID = 2, StudentName = "Steve", Age = 15 } , new Student() { StudentID = 3, StudentN