打印出 Linq 表达式树层次结构
动态语言运行时 (DLR) 有一些非常酷的 Expression 代码,包括一些非常好的代码来打印我想要使用的表达式树,以便:
int a = 1;
int b = 2;
Expression<Func<int, int>> expression = (c) => a + (b * c)
expression.Evaluate(5, stringBuilder)
输出:
(5) => a + (b * c) = 11 Where
a = 1
b * c = 10 Where
b = 2
c = 5
我在网上找到了一些代码来执行此操作,但发现它仅在表达式不带参数时才有效。
然后我发现了类似方法的 DLR 实现。 然而,DLR 有自己的 Expression 类和许多其他标准 C# 类型的自定义实现,所以我有点困惑。 有人知道我如何实现上述内容吗?
The dynamic language runtime (DLR) has some pretty cool code for Expression's, including some very nice code to print out Expression trees which I want to use so that:
int a = 1;
int b = 2;
Expression<Func<int, int>> expression = (c) => a + (b * c)
expression.Evaluate(5, stringBuilder)
Outputs:
(5) => a + (b * c) = 11 Where
a = 1
b * c = 10 Where
b = 2
c = 5
I found some code on the net to do this but found that it only works if the expressiontakes in no arguments.
I then discovered the DLR implementation of a similar method. However the DLR has its own custom implementations of the Expression class and many other standard C# types so I got a little confused. Anyone know how I can implement the above?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
怎么样:
How about: