LINQ – 查询运算符

LINQ – 查询运算符


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

LINQ 标准查询运算符可根据其功能分为以下几种。

  • 过滤运算符
  • 加入运算符
  • 投影操作
  • 排序运算符
  • 分组运算符
  • 转化次数
  • 级联
  • 聚合
  • 量词操作
  • 分区操作
  • 代运营
  • 设置操作
  • 平等
  • 元素运算符

过滤运算符

过滤是一种限制结果集的操作,使其只包含满足特定条件的选定元素。

显示示例

Operator 描述 C# 查询表达式语法 VB 查询表达式语法
where 基于谓词函数过滤值 在哪里 在哪里
OfType 根据值作为指定类型的能力过滤值 不适用 不适用

加入运算符

联接是指以难以直接跟踪关系的数据源为对象的操作。

显示示例

Operator 描述 C# 查询表达式语法 VB 查询表达式语法
Join 运算符根据匹配的键连接两个序列 加入……加入……上……等于…… 从 x In …, y In … 其中 xa = ya
GroupJoin 连接两个序列并对匹配的元素进行分组 join … in … on … 等于 … into … 组加入……进入……在……

投影操作

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

显示示例

Operator 描述 C# 查询表达式语法 VB 查询表达式语法
Select 运算符根据变换函数投影值 选择 选择
SelectMany 运算符将基于变换函数的值序列投影并将它们展平为单个序列 使用多个 from 子句 使用多个 From 子句

排序运算符

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

显示示例

Operator 描述 C# 查询表达式语法 VB 查询表达式语法
OrderBy 运算符按升序对值进行排序 订购单 订购方式
OrderByDescending 运算符按降序对值进行排序 orderby … 降序 排序方式 … 降序
ThenBy 按升序执行二次排序 订购…,… 按……订购,……
ThenByDescending 按降序执行二次排序 orderby …, … 降序 按……排序,……降序
Reverse 执行集合中元素顺序的反转 不适用 不适用

分组运算符

操作员根据共同的共享属性将数据放入一些组中。

显示示例

Operator 描述 C# 查询表达式语法 VB 查询表达式语法
GroupBy 以组的形式组织一系列项目并将它们作为 IGrouping<key, element> 类型的 IEnumerable 集合返回 group … by -or- group … by … into … 分组……由……进入……
ToLookup 执行分组操作,其中返回一系列密钥对 不适用 不适用

转化次数

运算符更改输入对象的类型并用于各种应用程序。

显示示例

Operator 描述 C# 查询表达式语法 VB 查询表达式语法
AsEnumerable 返回输入的类型为 IEnumerable<T> 不适用 不适用
AsQueryable A (generic) IEnumerable 转换为 (generic) IQueryable 不适用 不适用
Cast 将集合的元素强制转换为指定类型 使用显式类型的范围变量。例如:from string str in words 从……作为……
OfType 根据它们的值过滤值,这取决于它们被转换为特定类型的能力 不适用 不适用
ToArray 强制执行查询并将集合转换为数组 不适用 不适用
ToDictionary 基于键选择器函数将元素设置为 Dictionary<TKey, TValue> 并强制执行 LINQ 查询 不适用 不适用
ToList 通过将集合转换为 List<T> 强制执行查询 不适用 不适用
ToLookup 根据键选择器函数强制执行查询并将元素放入 Lookup<TKey, TElement> 不适用 不适用

级联

执行两个序列的连接,在操作方面与 Union 运算符非常相似,除了这不会删除重复项。

显示示例

Operator 描述 C# 查询表达式语法 VB 查询表达式语法
Concat 两个序列连接起来形成一个单一的序列。 不适用 不适用

聚合

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

显示示例

Operator 描述 C# 查询表达式语法 VB 查询表达式语法
Aggregate 对集合的值进行操作以执行自定义聚合操作 不适用 不适用
Average 计算一组值的平均值 不适用 聚合……进入……进入平均值()
Count 计算集合中满足谓词函数的元素 不适用 聚合……进入……进入计数()
LonCount 计算巨大集合中满足谓词函数的元素 不适用 聚合……进入……进入 LongCount()
Max 找出集合中的最大值 不适用 聚合……进入……进入Max()
Min 找出集合中存在的最小值 不适用 聚合……进入……进入Min()
Sum 找出集合中值的总和 不适用 聚合…进入…进入Sum()

量词操作

当序列中的部分或全部元素满足特定条件时,这些运算符返回一个布尔值,即 True 或 False。

显示示例

Operator 描述 C# 查询表达式语法 VB 查询表达式语法
All 如果序列的所有元素都满足谓词条件,则返回值“True” 不适用 聚合……在……到所有(……)
Any 通过搜索序列确定相同的元素是否满足指定条件 不适用 聚合……进入……进入任何()
Contains 如果发现序列中存在特定元素,则返回“真”值,如果序列不包含该特定元素,则返回“假”值 不适用 不适用

分区运算符

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

显示示例

Operator 描述 C# 查询表达式语法 VB 查询表达式语法
Skip 跳过序列中某些指定数量的元素并返回剩余的元素 不适用 跳过
SkipWhile 与 Skip 相同,唯一的例外是要跳过的元素数量由布尔条件指定 不适用 跳过时间
Take 从序列中取出指定数量的元素并跳过其余元素 不适用
TakeWhile 与 Take 相同,除了要采用的元素数量由布尔条件指定 不适用 花点时间

代运营

代运算符创建了一个新的值序列。

显示示例

Operator 描述 C# 查询表达式语法 VB 查询表达式语法
DefaultIfEmpty 应用于空序列时,在序列内生成默认元素 不适用 不适用
Empty 返回一个空的值序列,是最简单的分代运算符 不适用 不适用
Range 生成具有整数或数字序列的集合 不适用 不适用
Repeat 生成包含特定长度的重复值的序列 不适用 不适用

设置操作

集合操作有四个运算符,每个运算符根据不同的标准产生一个结果。

显示示例

Operator 描述 C# 查询表达式语法 VB 查询表达式语法
Distinct 通过过滤重复数据(如果有)从集合中生成唯一值列表 不适用 清楚的
Except 比较两个集合的值并返回一个集合中不在另一个集合中的值 不适用 不适用
Intersect 返回在两个单独的集合中发现相同的值集 不适用 不适用
Union 将两个不同集合的内容合并到一个列表中,该列表也没有任何重复的内容 不适用 不适用

平等

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

显示示例

Operator 描述 C# 查询表达式语法 VB 查询表达式语法
SequenceEqual 如果发现两个序列彼此相同,则结果为布尔值 不适用 不适用

元素运算符

除了 DefaultIfEmpty,其余 8 个标准查询元素运算符都返回集合中的单个元素。

显示示例

Operator 描述 C# 查询表达式语法 VB 查询表达式语法
ElementAt 返回集合中特定索引中存在的元素 不适用 不适用
ElementAtOrDefault 与 ElementAt 相同,不同之处在于它还返回默认值以防特定索引超出范围 不适用 不适用
First 检索集合中的第一个元素或满足特定条件的第一个元素 不适用 不适用
FirstOrDefault 与 First 相同,除了在不存在此类元素的情况下它还返回默认值 不适用 不适用
Last 检索集合中存在的最后一个元素或满足特定条件的最后一个元素 不适用 不适用
LastOrDefault 与 Last 相同,除了在不存在任何此类元素的情况下它还返回默认值的事实 不适用 不适用
Single 返回集合的单独元素或满足特定条件的单独元素 不适用 不适用
SingleOrDefault 与 Single 相同,但如果不存在任何此类单独元素,则它还返回默认值 不适用 不适用
DefaultIfEmpty 如果集合或列表为空或 null,则返回默认值 不适用 不适用

觉得文章有用?

点个广告表达一下你的爱意吧 !😁