C# 打印表达式库

C# 打印表达式库,c#,expression-trees,C#,Expression Trees,我正在寻找提供表达式打印功能的库(从lambda转换为表达式树)。换句话说,它应该做类似于解析示例的工作,但显然应该更加完整。有人知道这样的库吗?如果您想要表达式的一些文本表示,而不关心它到底是什么样子,可以使用ToString()。所有类型都重写此方法 例如,对于简单表达式num=>num(numnum(Convert(num)num(numnum(Convert(num)

我正在寻找提供表达式打印功能的库(从lambda转换为表达式树)。换句话说,它应该做类似于解析示例的工作,但显然应该更加完整。有人知道这样的库吗?

如果您想要表达式的一些文本表示,而不关心它到底是什么样子,可以使用
ToString()
。所有类型都重写此方法


例如,对于简单表达式
num=>num<5
ToString()
返回
num=>(num<5)
。但是对于更复杂的表达式,它看起来不再像C代码了。例如,对于
num=>num
,它返回
num=>(Convert(num)
,如果您想要表达式的一些文本表示,而不关心它到底是什么样子,那么可以使用
ToString()
。所有类型都重写此方法


例如,对于简单表达式
num=>num<5
ToString()
返回
num=>(num<5)
。但是对于更复杂的表达式,它看起来不再像C代码了。例如,对于
num=>num
,它返回
num=>(Convert(num)
,为什么要这样做?打印的表达式应该是什么样子?
ToString()
对你来说不够好吗?@svick:我不确定你是否理解我的问题。请看链接中的例子。为什么你认为我不理解你的问题?我查看了链接中的示例,但它没有明确说明您到底想要什么。你能回答我的问题吗?@svick:我想是因为
ToString()
的建议。我已经开始编辑问题,然后我理解了您所说的
ToString()
。不知道expression对象上的to字符串只是漂亮地打印了表达式!;)将其作为答案发布,以使其被接受。可能重复您为什么要这样做?打印的表达式应该是什么样子?
ToString()
对你来说不够好吗?@svick:我不确定你是否理解我的问题。请看链接中的例子。为什么你认为我不理解你的问题?我查看了链接中的示例,但它没有明确说明您到底想要什么。你能回答我的问题吗?@svick:我想是因为
ToString()
的建议。我已经开始编辑问题,然后我理解了您所说的
ToString()
。不知道expression对象上的to字符串只是漂亮地打印了表达式!;)把它贴出来作为答案让人接受。可能的副本正是我需要的。有时候最黑暗的地方在烛台下;)或者,对于更复杂的情况:@konrad.kruczynski
ToString
比手动访问每个节点并打印所需内容要慢(如果您想在循环中运行它)。@nawfal:在我的情况下,这不会是个问题。这正是我需要的。有时候最黑暗的地方在烛台下;)或者,对于更复杂的情况:@konrad.kruczynski
ToString
比手动访问每个节点并打印所需内容要慢(如果您想在循环中运行它)。@nawfal:在我的情况下,这不会是个问题。