System.Linq和System.Linq.Expressions命名空间

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 指定唯一的节点类型。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值