我对表达树的理解是:
表达式树是类似表达式的算术或布尔表达式的内存中表示。表达式存储在被解析的树中,因此我们可以轻松地将其转换为任何其他语言。
Linq使用表达式树。通常,在Linq到SQL查询中,编译器会将其转换为解析的表达式树。这些语句作为T语句传递给Server .SQL服务器执行The查询并将结果发回.这就是为什么当您执行Linq到SQL时,您得到的是IQueryable<T>而不是IEnumerable<T>;因为IQueryable包含
public IQueryable : IEnumerable
{
Type Element {get;}
Expression Expression {get;}
IQueryableProvider Provider {get;}
}问题:
IEnumerable,LINQ返回IQueryable,LINQ返回什么?发布于 2010-03-28 17:02:00
表达式树提供了一种在运行时实际编译代码之前检查代码的方法。
可以使用表达式树精确地完成两件事:
表达式树很酷,但它们对典型的网站或企业应用程序有任何直接用处的可能性是很小的。只有在以下情况下才会使用它们:(a)希望在运行时从C#源生成不同类型的代码;或(b)希望使用反射,但提供某种程度的编译时安全性。
如果您正在开发可重用库-- DI框架、AOP框架、MVC/MVP/MVVM框架、ORM框架等等,或者试图扩展其中的一个框架(包括Linq到-XYZ),那么您可能会发现表达式树(例如Linq到SQL 批更新扩展)的用途,尽管很难讨论具体的例子,因为它完全取决于这样一个框架的设计。
如果你不是在构建这类工具,那么表达式树只不过是一种好奇。当然,很高兴了解到--但是如果你没有发现太多的实际用途,就不要失望。
几个使用表达式树的库示例:
...That应该让您了解如何认真使用表达式树的项目。因此,如果您正在构建您自己的运行时环境或MVC,您肯定希望了解您所能了解的一切。;)
发布于 2010-03-28 16:44:47
IEnumerable<XElement>的。发布于 2010-03-29 21:29:35
我建议在这里阅读一些文章:http://blogs.msdn.com/csharpfaq/archive/tags/expression+trees/default.aspx
我写信给他们是为了回答像这样的问题。我试着给出一些基础知识,并展示一些有趣的技巧,您可以使用LINQ和DLR之外的表达式树来实现这些技巧。
https://stackoverflow.com/questions/2533649
复制相似问题