表达式树与委托

Posted cjm123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了表达式树与委托相关的知识,希望对你有一定的参考价值。

技术分享图片

 

表达式树表示树状数据结构中的代码,其中每个节点都是一个表达式,例如,方法调用或二进制操作,如x < y

您可以编译和运行由表达式树表示的代码。这使得可执行代码的动态修改,在各种数据库中执行LINQ查询以及创建动态查询成为可能。

在LINQ中,表达式树被用来表示针对实现IQueryable <T>的数据源的结构化查询例如,LINQ提供程序实现用于查询关系数据存储IQueryable <T>接口。C#编译器将定位此类数据源的查询编译为在运行时构建表达式树的代码。然后,查询提供者可以遍历表达式树数据结构并将其转换为适合数据源的查询语言。

LINQ中还使用表达式树来表示分配给Expression <TDelegate>类型的变量的lambda表达式

本主题描述如何使用表达式树来创建动态的LINQ查询。动态查询在编译时不知道查询的具体情况时非常有用。例如,应用程序可能会提供一个用户界面,使最终用户能够指定一个或多个谓词来过滤数据。为了使用LINQ进行查询,这种应用程序必须使用表达式树来在运行时创建LINQ查询。

 

以上是关于表达式树与委托的主要内容,如果未能解决你的问题,请参考以下文章

C#委托,匿名方法,Lambda,泛型委托,表达式树代码示例

如何通过表达式树生成的委托调用自己?

C#图解教程 第十九章 LINQ

C#之委托

C#学习(10):委托

part01.03 委托与 Lambda 表达式:委托