Linq 简明教程

LINQ - Query Operators

形成查询模式的一组扩展方法被称为 LINQ 标准查询运算符。作为 LINQ 查询表达式的构建块,这些运算符提供了一系列查询功能,如筛选、排序、投影、聚合等。

LINQ 标准查询运算符可以根据其功能归类为以下类。

  1. Filtering Operators

  2. Join Operators

  3. Projection Operations

  4. Sorting Operators

  5. Grouping Operators

  6. Conversions

  7. Concatenation

  8. Aggregation

  9. Quantifier Operations

  10. Partition Operations

  11. Generation Operations

  12. Set Operations

  13. Equality

  14. Element Operators

Filtering Operators

筛选是一种操作,用于限制结果集,以便它只有满足特定条件的选定元素。

Operator

Description

C# Query Expression Syntax

VB Query Expression Syntax

where

根据谓词函数筛选值

where

Where

OfType

根据其作为指定类型的可能性筛选值

Not Applicable

Not Applicable

Join Operators

联接是指以直接方式针对难以相互跟踪关系的数据源的操作。

Operator

Description

C# Query Expression Syntax

VB Query Expression Syntax

Join

联接基于匹配的键连接两个序列

联接 … 在 … 时 … 等于…

从 x 中 …,y 中 … 其中 x.a = y.a

GroupJoin

联接两个序列并分组匹配的元素

join … in … on … equals … into …

Group Join … In … On …

Projection Operations

投影是一种将对象转换成具有特定属性的全新形式的操作。

Operator

Description

C# Query Expression Syntax

VB Query Expression Syntax

Select

运算符基于转换函数投影值

select

Select

SelectMany

运算符投影基于转换函数的值序列,并将它们压扁成单个序列

Use multiple from clauses

Use multiple From clauses

Sorting Operators

排序操作允许基于单个或多个属性对序列的元素进行排序。

Operator

Description

C# Query Expression Syntax

VB Query Expression Syntax

OrderBy

运算符按升序对值进行排序

orderby

Order By

OrderByDescending

运算符按降序对值进行排序

orderby …​ descending

Order By …​ Descending

ThenBy

按升序执行二次排序

orderby …, …

Order By …, …

ThenByDescending

按降序执行二次排序

orderby …, … descending

Order By …, … Descending

Reverse

对集合中的元素顺序进行颠倒

Not Applicable

Not Applicable

Grouping Operators

运算符基于常用共享属性将数据放入到某些组中。

Operator

Description

C# Query Expression Syntax

VB Query Expression Syntax

GroupBy

按组组织项目序列并将其作为 IGrouping<key, element> 类型的 IEnumerable 集合返回

group … by -or- group … by … into …

Group … By … Into …

ToLookup

执行分组操作,其中返回一系列键对

Not Applicable

Not Applicable

Conversions

运算符会更改输入对象的类型,应用于各类应用程序中。

Operator

Description

C# Query Expression Syntax

VB Query Expression Syntax

AsEnumerable

将输入类型返回为 IEnumerable<T>

Not Applicable

Not Applicable

AsQueryable

(泛型)IEnumerable 被转换为(泛型)IQueryable

Not Applicable

Not Applicable

Cast

执行将集合元素强制转换为指定类型

使用显式类型范围变量。例如:from string str in words

From … As …

OfType

根据值的能力而根据其类型对其进行筛选,具体取决于它们是否可以强制转换为特定类型

Not Applicable

Not Applicable

ToArray

强制执行查询并执行从集合到数组的转换

Not Applicable

Not Applicable

ToDictionary

根据键选择器函数将元素设置到 Dictionary<TKey, TValue> 中,并且强制执行 LINQ 查询

Not Applicable

Not Applicable

ToList

通过将集合转换为 List<T> 来强制执行查询

Not Applicable

Not Applicable

ToLookup

强制执行查询,并且根据键选择器函数将元素放入到 Lookup<TKey, TElement> 中

Not Applicable

Not Applicable

Concatenation

执行两个序列的连接,并且除不删除重复项这一事实外,在操作方面与 Union 运算符很相似。

Operator

Description

C# Query Expression Syntax

VB Query Expression Syntax

Concat

连接两个序列,形成一个序列。

Not Applicable

Not Applicable

Aggregation

执行任何类型的所需聚合,并允许在 LINQ 中创建自定义聚合。

Operator

Description

C# Query Expression Syntax

VB Query Expression Syntax

Aggregate

针对集合的值操作来执行自定义聚合操作

Not Applicable

Not Applicable

Average

计算出值集合的平均值

Not Applicable

聚合…到…转换为 Average()

Count

统计满足集合中谓词函数的元素

Not Applicable

聚合…到…转换为 Count()

LonCount

统计满足巨型集合中谓词函数的元素

Not Applicable

聚合…到…转换为 LongCount()

Max

找出集合中的最大值

Not Applicable

聚合…到…转换为 Max()

Min

找出集合中存在的最小值

Not Applicable

聚合…到…转换为 Min()

Sum

找出集合中值的总和

Not Applicable

聚合…到…转换为 Sum()

Quantifier Operations

当序列中某些或所有元素满足特定条件时,这些运算符会返回布尔值,即 True 或 False。

Operator

Description

C# Query Expression Syntax

VB Query Expression Syntax

All

如果序列的所有元素都满足谓词条件,则返回“True”值

Not Applicable

聚合…到…转换为 All(…)

Any

通过搜索序列确定其任何元素是否满足指定条件

Not Applicable

聚合…到…转换为 Any()

Contains

如果发现序列中存在特定元素,则返回“True”值;如果序列不包含该特定元素,则返回“false”值

Not Applicable

Not Applicable

Partition Operators

将输入序列划分为不重新排列序列元素的两个独立部分,然后返回其中之一。

Operator

Description

C# Query Expression Syntax

VB Query Expression Syntax

Skip

在序列中跳过指定数量的元素,并返回剩余元素

Not Applicable

Skip

SkipWhile

与 Skip 相同,唯一不同的是要跳过的元素数量由一个布尔条件指定

Not Applicable

Skip While

Take

从序列中取指定数量的元素,并跳过其余元素

Not Applicable

Take

TakeWhile

与 Take 相同,但不同之处在于要取的元素数量由一个布尔条件指定

Not Applicable

Take While

Generation Operations

新值序列由生成运算符创建。

Operator

Description

C# Query Expression Syntax

VB Query Expression Syntax

DefaultIfEmpty

当应用于空序列时,在序列中生成一个默认元素

Not Applicable

Not Applicable

Empty

返回空值序列,是最简单的生成运算符

Not Applicable

Not Applicable

Range

生成具有整数或数字序列的集合

Not Applicable

Not Applicable

Repeat

生成包含特定长度的重复值序列

Not Applicable

Not Applicable

Set Operations

集合运算有四个运算符,每个运算符根据不同的条件产生结果。

Operator

Description

C# Query Expression Syntax

VB Query Expression Syntax

Distinct

通过过滤重复数据(如果有的话),生成集合中唯一值的列表

Not Applicable

Distinct

Except

比较两个集合的值,并返回一个集合中的值,而另一个集合中不存在

Not Applicable

Not Applicable

Intersect

返回在两个不同集合中发现的值相同的集合

Not Applicable

Not Applicable

Union

将两个不同集合的内容组合成一个列表,并且没有任何重复内容

Not Applicable

Not Applicable

Equality

比较两个句子(可枚举的),并确定它们是否完全匹配。

Operator

Description

C# Query Expression Syntax

VB Query Expression Syntax

SequenceEqual

如果两个序列彼此相同,则结果为布尔值

Not Applicable

Not Applicable

Element Operators

除了 DefaultIfEmpty,所有其他八个标准查询元素运算符都会从一个集合返回一个单一元素。

Operator

Description

C# Query Expression Syntax

VB Query Expression Syntax

ElementAt

返回集合中特定索引内存在的元素

Not Applicable

Not Applicable

ElementAtOrDefault

与 ElementAt 相同,除了在特定索引超出范围时返回默认值

Not Applicable

Not Applicable

First

检索集合中的第一个元素或满足特定条件的第一个元素

Not Applicable

Not Applicable

FirstOrDefault

与 First 相同,除了在没有这样的元素时返回默认值

Not Applicable

Not Applicable

Last

检索集合中存在的最后一个元素或满足特定条件的最后一个元素

Not Applicable

Not Applicable

LastOrDefault

与 Last 相同,除了在没有这样的元素时返回默认值

Not Applicable

Not Applicable

Single

返回集合的单个元素或满足特定条件的单个元素

Not Applicable

Not Applicable

SingleOrDefault

与 Single 相同,除了在没有这样的单个元素时返回默认值

Not Applicable

Not Applicable

DefaultIfEmpty

如果集合或列表为空或 null,则返回默认值

Not Applicable

Not Applicable