LINQ - 查询运算符

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

LINQ标准查询运算符可以分类为以下几种它们的功能基础.

  • 过滤运算符

  • 加入运算符

  • 投影操作

  • 排序运算符

  • 分组运算符

  • 转换

  • 连接

  • 聚合

  • 量化操作

  • 分区操作

  • 生成操作

  • 设置操作

  • Equality

  • 元素操作符

过滤运算符

过滤是一种限制结果集的操作,使得它只选择满足特定条件的元素.

显示示例

运算符描述C#查询表达式语法VB查询表达式语法
where根据谓词函数过滤值wherewhere
OfType根据其作为指定类型的能力过滤值不适用不适用

加入运算符

加入是指以直接方式难以跟踪关系的数据源的目标操作.

显示示例

运算符描述C#查询表达式语法VB查询表达式语法
加入运算符根据匹配键加入两个序列join ... in ... on ... equals ...从x In ...,y In ...其中xa = ya
GroupJoin加入两个序列并将匹配元素分组join ... in ... on ... equals ... into ...Group Join ... In ... On ...

投影操作

投影是将对象转换为对象的操作一个只包含特定属性的全新表单.

显示示例

运算符描述C#查询表达式语法VB查询表达式语法
Select运算符根据转换函数投影值selectSelect
SelectMany运营商项目基于变换函数的值序列以及将它们展平为单个序列使用多个from子句使用多个From子句

排序运算符

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

显示示例

运算符描述C#查询表达式语法VB查询表达式语法
OrderBy运算符按升序排序值orderby按顺序排序
OrderByDescending运算符按降序排序值orderby ... descendingOrder By ... Descending
ThenBy按升序执行二级排序orderby ...,...订购依据...,...
ThenByDescending执行按降序进行二级排序orderby ...,...降序按顺序排序......,......降序
Reverse执行orde的撤销集合中元素的r不适用不适用

分组运算符

运算符根据公共共享属性将数据放入某些组中.

显示示例

运算符描述C#查询表达式语法VB查询表达式语法
GroupBy组织一系列项目,并将它们作为IGrouping< key,element>group ...的类型的IEnumerable集合返回 -  group ... by ... into ...Group ... By ... Into ...
ToLookup执行分组操作,其中返回一系列密钥对不适用不适用

转换次数

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

显示示例

运算符描述C#查询表达式语法VB查询表达式语法
AsEnumerable返回输入为IEnumerable的输入< T>不适用不适用
AsQueryableA(通用)IEnumerable转换为a(通用)IQueryable不适用不适用
Cast执行将集合元素转换为指定类型使用显式类型的范围变量.例如:来自字符串str in wordsFrom ... As ...
OfType基于它们的过滤值,具体取决于它们被投射到特定类型的能力不适用不适用
ToArray强制查询执行并转换a集合到数组不适用不适用
ToDictionary基于键选择器功能将元素设置为字典< TKey,TValue>并强制执行LINQ查询不适用不适用
ToList通过将集合转换为列表来强制执行查询< T>不适用不适用
ToLookup强制执行查询并将元素放入查找< TKey,TElement>基于键选择器功能不适用不适用

连接

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

显示示例

VB查询表达式语法

运算符描述C#查询表达式语法
Concat连接两个序列形成单一序列.不适用不适用

聚合

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

显示示例

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

Quantifier Operations

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

显示示例

运算符描述C#查询表达式语法VB查询表达式语法
All如果序列的所有元素都满足谓词条件,则返回值"True"不适用Aggregate ... In ...全部进入(...)
Any确定通过搜索序列是否有任何元素满足指定条件不适用聚合... In ... Into Any()
Contains如果发现特定元素存在,则返回"True"值序列如果序列不包含该特定元素,则返回'false'值不适用不适用

分区运算符

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

显示示例

运算符描述C#查询表达式语法VB查询表达式语法
Skip跳过序列中指定数量的元素并返回剩余的元素不适用Skip
SkipWhile与Skip相同,唯一的例外是该号码要跳过的元素由布尔条件指定不适用跳过
Take从序列中取出指定数量的元素并跳过剩余的元素不适用Take
TakeWhile与Take相同,但要采用的元素数由布尔条件指定不适用Ta ke While

生成操作

创建一个新的值序列代际运算符.

显示示例

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

设定操作

设置操作有四个运算符,每个运算符根据不同的标准产生结果.

显示示例中的操作

运算符描述C#查询表达式语法VB查询表达式语法
Distinct通过过滤重复数据(如果有的话)从集合中得到唯一值的列表不适用区别
Except比较两个集合的值并返回来自一个不在另一个集合中的集合不适用不适用
Intersect返回在两个单独的集合中找到相同的值集合不适用不适用
Union将两个不同集合的内容合并到一个列表中,也没有任何重复内容不适用不适用

Equality

比较两句话(可枚举的)并确定它们是否完全匹配.

Show示例

运算符描述C#查询表达式语法VB查询表达式语法
SequenceEqual如果发现两个序列彼此相同,则得到一个布尔值不适用不适用

元素运算符

除DefaultIfEmpty外,其余八个标准查询元素运算符都返回来自集合的单个元素.

显示示例

运算符描述C#查询表达式语法VB查询表达式语法
ElementAt返回集合中特定索引中存在的元素不适用不适用
ElementAtOrDefault与ElementAt相同,除了事实上,如果特定指数超出范围,它也会返回默认值不适用不适用
First检索集合中的第一个元素或满足特定条件的第一个元素不适用不适用
Fi rstOrDefault与First相同,除非它在没有这些元素的情况下也返回默认值不适用不适用
Last检索集合中存在的最后一个元素或满足特定条件的最后一个元素不适用不适用
LastOrDefault与Last相同,除非它还返回默认值,以防没有任何此类元素不适用不适用
Single返回集合的唯一元素或满足特定条件的唯一元素不适用不适用
SingleOrDefault与Single相同,只是如果没有ex,它也会返回默认值任何此类单独元素的等值不适用不适用
DefaultIfEmpty如果集合或列表为空或null,则返回默认值不适用不适用