C# 表达式树/迭代表达式树中的查找方法调用

C# 表达式树/迭代表达式树中的查找方法调用,c#,.net,linq,expression-trees,C#,.net,Linq,Expression Trees,我需要在表达式树中找到对特定方法的所有调用,这可能非常复杂。目前,我有一个简单的递归代码,用于检查BinaryExpression、ConditionalExpression等,当然还有MethodCallExpression。这是可行的,但我想知道是否有更简单的方法 我需要的是一个迭代器,用于复杂表达式中的所有MethodCallExpression,这样我就可以检查MethodCallExpression,而不必关心树中其他类型的表达式。例如,在System.Linq.Expressions

我需要在表达式树中找到对特定方法的所有调用,这可能非常复杂。目前,我有一个简单的递归代码,用于检查BinaryExpression、ConditionalExpression等,当然还有MethodCallExpression。这是可行的,但我想知道是否有更简单的方法


我需要的是一个迭代器,用于复杂表达式中的所有MethodCallExpression,这样我就可以检查MethodCallExpression,而不必关心树中其他类型的表达式。例如,在System.Linq.Expressions中的某个地方是否有这样的内置内容?

正如svick正确指出的那样:使用ExpressionVisitor基类:

如果您想自己动手或了解ExpressionVisitor的工作原理,在本文中,Matt Warren将向您展示如何通过访问每个节点来重建表达式树


你不需要重建它,你只需要搜索它。您可以修改Matt的代码,使其不会返回新的重建表达式,它只是递归地搜索每个子节点。

向我们展示您现在的示例。或者只使用已经包含在框架中的基类:。@svick:很好,我忘了我们已经开始包含它了。