C# 如何将lambda表达式转换为代码(文本)?

C# 如何将lambda表达式转换为代码(文本)?,c#,lambda,C#,Lambda,将System.Linq.LambdaExpression转换为可编译代码的“正确”或“最佳”方法是什么?我的应用程序有一种“查询语言”,可以将搜索表达式转换为lambda。我正在开发一个代码生成器,并试图利用这种查询语言来生成验证表达式Expression.ToString()使用ExpressionStringBuilder,它将一些节点转换为有效C#以外的内容,例如'AndAlso'和'OrElse',而不是运算符&和|。理想情况下,我会覆盖ExpressionStringBuilder,

System.Linq.LambdaExpression
转换为可编译代码的“正确”或“最佳”方法是什么?我的应用程序有一种“查询语言”,可以将搜索表达式转换为lambda。我正在开发一个代码生成器,并试图利用这种查询语言来生成验证表达式
Expression.ToString()
使用
ExpressionStringBuilder
,它将一些节点转换为有效C#以外的内容,例如'AndAlso'和'OrElse',而不是运算符
&
|
。理想情况下,我会覆盖ExpressionStringBuilder,但它是内部的。

您可以实现一个表达式树访问者,将所有节点转换为代码。请参阅(MSDN)。

将其转换为编译代码的最佳方法是调用
Compile
。如果您想将其转换为有效的未编译C代码,那么这肯定不是一项小任务;远远超出了SO答案的范围。我希望避免。。。哦,好吧。