gpt4 book ai didi

c# - 表达式树上的 ToString 产生格式错误的输出

转载 作者:行者123 更新时间:2023-11-30 12:59:56 25 4
gpt4 key购买 nike

当我使用 Expression.ToString() 将表达式树转换为人类可读的形式时,结果如下所示:

x => ((x.ID > 2) OrElse (x.ID != 6))
x => ((x.ID > 2) AndAlso (x.ID != 6))

理想情况下,我希望输出显示运算符而不是“OrElse”和“AndAlso”:

x => ((x.ID > 2) || (x.ID != 6))
x => ((x.ID > 2) && (x.ID != 6))

作为解决方法,我可以使用 string.Replace() 方法..

.Replace("AndAlso", "&&")
.Replace("OrElse", "||")

但这有明显的弱点并且看起来很尴尬。此外,我不想仅仅为了获得正确的格式而创建一个大的“替换”部分或巨大的正则表达式树。

是否有一种简单的方法来获得类似代码的人类可读形式的表达式树?

最佳答案

不幸的是,正确执行此操作的最简单方法是编写您自己的 ExpressionVisitor 类,该类生成 C# 格式的输出代码。

最简单的方法是使用 ExpressionStringBuilder以引用源为起点并对其进行调整,直到您对输出结果感到满意为止。

关于c# - 表达式树上的 ToString 产生格式错误的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23438154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com