System.Linq 命名空间提供类和接口支持使用查询的 语言集成查询 (LINQ)。
类
类 | 说明 | |
---|---|---|
Enumerable | 提供了一套 static (Shared 在 Visual Basic 中) 用于查询实现的对象方法 IEnumerable<T> 。 |
|
EnumerableExecutor | 表示一个表达式树,并提供在重写之后执行表达式树的功能。 | |
EnumerableExecutor<T> |
此 API 支持 产品 基础结构,不应从代码直接使用。 表示一个表达式树,并提供在重写之后执行表达式树的功能。 | |
EnumerableQuery | 此 API 支持 产品 基础结构,不应从代码直接使用。 表示 IEnumerable 作为 EnumerableQuery 数据源。 | |
EnumerableQuery<T> |
此 API 支持 产品 基础结构,不应从代码直接使用。 表示作为 IQueryable<T> 数据源的 IEnumerable<T> 集合。 |
|
Lookup | 表示键的集合,其中每个键映射到一个或多个值。 | |
OrderedParallelQuery<TSource> |
表示一个排序的并行序列。 | |
ParallelEnumerable | 提供一组用于查询实现 ParallelQuery{TSource} 的对象的方法。 此命令的并行等效 Enumerable。 | |
ParallelQuery | 表示一个并行序列。 | |
ParallelQuery<TSource> |
表示一个并行序列。 | |
Queryable | 提供了一套 static (Shared 在 Visual Basic 中) 方法来查询数据结构,并实现 IQueryable<T> 。 |
接口
接口 | 说明 | |
---|---|---|
IGrouping | 表示具有公共键的对象的集合。 | |
ILookup | 定义索引器、 大小属性,并将键映射到的数据结构的布尔搜索方法 IEnumerable<T> 值的序列。 |
|
IOrderedEnumerable<TElement> |
表示一个排序的序列。 | |
IOrderedQueryable | 表示排序操作的结果。 | |
IOrderedQueryable<T> |
表示排序操作的结果。 | |
IQueryable | 提供针对特定数据源(其中数据类型未指定)评估查询的功能。 | |
IQueryable<T> |
提供针对特定数据源(其中数据类型未未知)评估查询的功能。 | |
IQueryProvider | 定义用于创建和执行查询所描述的方法 IQueryable 对象。 |
枚举
枚举 | 说明 | |
---|---|---|
ParallelExecutionMode | 查询执行模式是一个提示,指定在对查询进行并行化时系统应如何处理性能权衡。 | |
ParallelMergeOptions | 指定首选的类型 输出合并 要在查询中使用。 换而言之,它指示 PLINQ 应如何将来自各个分区的结果合并回单个结果序列。 这只是一个提示,并且在对所有查询进行并行化时系统可能不会遵循此提示。 |
备注
System.Linq 命名空间是在 System.Core 程序集中 (在 System.Core.dll)。
Enumerable 类包含 LINQ 实现的对象运行的标准查询运算符 IEnumerable<T>
。
Queryable 类包含 LINQ 实现的对象运行的标准查询运算符 IQueryable<T>
。
关于 LINQ to SQL 的信息,请参阅 LINQ to SQL [LINQ to SQL]。
System.Linq.Expressions 命名空间包含类、 接口和枚举可使语言级代码表达式表示为表达式目录树形式的对象。
类
类 | 说明 |
---|---|
BinaryExpression | 表示具有二进制运算符的表达式。 |
BlockExpression | 表示包含一个表达式序列的块,表达式中可定义变量。 |
CatchBlock | 表示 try 块中的 catch 语句。 |
ConditionalExpression | 表示具有条件运算符的表达式。 |
ConstantExpression | 表示具有常数值的表达式。 |
DebugInfoExpression | 发出或清除调试信息的序列点。 这使调试器能够在调试时突出显示正确的源代码。 |
DefaultExpression | 表示一个类型或空表达式的默认值。 |
DynamicExpression | 表示一个动态操作。 |
DynamicExpressionVisitor | 表示动态表达式树的访问者或重写者。 |
ElementInit | 表示 IEnumerable 集合的单个元素的初始值设定项。 |
Expression | 提供一种基类,表示表达式树节点的类派生自该基类。 它还包含用来创建各种节点类型的 static(在 Visual Basic 中为 Shared)工厂方法。 这是一个 abstract 类。 |
Expression<TDelegate> |
将强类型化的 Lambda 表达式表示为表达式树形式的数据结构。 此类不能被继承。 |
ExpressionVisitor | 表示表达式树的访问者或重写者。 |
GotoExpression | 表示无条件跳转。 这包括返回语句,break 和 continue 语句以及其他跳转。 |
IndexExpression | 表示对一个属性或数组进行索引。 |
InvocationExpression | 表示一个将委托或 lambda 表达式应用到一个自变量表达式列表的表达式。 |
LabelExpression | 表示一个标签,可以放置在任何 Expression 上下文。 如果它跳转到,它会提供相应的值 GotoExpression。 否则,它接收中的值 DefaultValue。 如果 Type 等于 System.Void,则应提供任何值。 |
LabelTarget | 用来表示目标的 GotoExpression。 |
LambdaExpression | 介绍 lambda 表达式。 它捕获一个类似于 .NET 方法主体的代码块。 |
ListInitExpression | 表示具有集合初始值设定项的构造函数调用。 |
LoopExpression | 表示无限循环。 可通过“中断”退出该循环。 |
MemberAssignment | 表示对象的字段或属性的赋值操作。 |
MemberBinding | 提供表示绑定的类派生自的基类,这些绑定用于对新创建对象的成员进行初始化。 |
MemberExpression | 表示访问字段或属性。 |
MemberInitExpression | 表示调用构造函数并初始化新对象的一个或多个成员。 |
MemberListBinding | 表示初始化新创建对象的一个集合成员的元素。 |
MemberMemberBinding | 表示初始化新创建对象的一个成员的成员。 |
MethodCallExpression | 表示对静态方法或实例方法的调用。 |
NewArrayExpression | 表示创建一个新数组,并可能初始化该新数组的元素。 |
NewExpression | 表示一个构造函数调用。 |
ParameterExpression | 表示一个命名的参数表达式。 |
RuntimeVariablesExpression | 一个表达式,提供变量的运行时读/写权限。 |
SwitchCase | 表示的一种情况 SwitchExpression。 |
SwitchExpression | 表示通过将控制权传递给处理多个选择的控件表达式 SwitchCase。 |
SymbolDocumentInfo | 存储用于发出源文件调试符号信息所必要的信息,尤其是文件名和唯一的语言标识符。 |
TryExpression | 表示一个 try/catch/finally/fault 块。 |
TypeBinaryExpression | 表示表达式和类型之间的操作。 |
UnaryExpression | 表示具有一元运算符的表达式。 |
接口
接口 | 说明 |
---|---|
IArgumentProvider | 提供用于访问多个树节点(DynamicExpression、ElementInit、MethodCallExpression、InvocationExpression、NewExpression 和 InexExpression)的参数的内部接口。 不应使用此 API。 它只会由于 DLL 重构而公开并仅用于内部性能优化。 |
这能够实现两次优化,从而减少了表达式树的大小。 第一次优化可以使树节点保留在 IList <T> 上而不是 ReadOnlyCollection 上。 IList<T> 将节约用在为每个节点分配 ReadOnlyCollection 方面的成本。 第二次优化能够创建专用的子类,可保留特定数量的参数(例如,Block2、Block3、Block4)。 因此,这些节点避免了分配用于存储其元素的 ReadOnlyCollection 和数组,从而为每个节点节省了 32 个字节。 |
|
表达式树节点继续公开 ReadOnlyCollections 的原始 LINQ 属性。 这些节点通过重复使用用于存储数组或元素(通常存储在数组中)的字段来执行此操作。 | |
对于数组用例,集合将类型化为 IList<T> ,而不是 ReadOnlyCollection<T> 。 当节点在最初构造时它是一个数组。 当编译器访问成员时它会使用此接口。 访问数组元素可以将数组升级到 ReadOnlyCollection。 |
|
对于对象用例,我们会存储类型化为对象的字段中的第一个参数。 当最初构造该节点时,该字段将持有该表达式。 编译器通过此接口访问参数,第一个参数的访问器使用 Expression.ReturnObject 返回用于处理表达式或 ReadOnlyCollection 用例的对象。 当用户访问 ReadOnlyCollection 时,将更新对象字段以直接保留 ReadOnlyCollection。 | |
表达式始终返回相同的 ReadOnlyCollection,这一点很重要。 否则,将中断重写树查看器。 从 LINQ v1 返回不同的 ReadOnlyCollections 形成相同的表达式节点,这是一个重大突破。 当前用户可以依赖对象标识来区分该节点是否已更改。 在重载字段中存储 ReadOnlyCollection 既可减少内存使用量,又可保持公共 API 兼容性。 | |
IDynamicExpression | 提供用于访问 DynamicExpression 树节点的参数及 CallSite 和重写功能的内部接口。 不应使用此 API。 由于 DLL 重构,它只能是公共的;并且仅用于内部性能优化。 |
枚举
枚举 | 说明 |
---|---|
ExpressionType | 介绍表达式树节点的节点类型。 |
GotoExpressionKind | 指定内容类型的跳转这 GotoExpression 表示。 |
MemberBindingType | 描述中使用的绑定类型 MemberInitExpression 对象。 |
备注
抽象类 Expression
提供了用于对模型表达式树类层次结构的根。
派生自该命名空间中的类 Expression, ,例如 MemberExpression 和 ParameterExpression, ,用于表示表达式树中的节点。 Expression 类包含 static (Shared 在 Visual Basic 中) 工厂方法,用于创建表达式树节点的各种类型。
枚举类型 ExpressionType
指定唯一的节点类型。