如何检查linq表达式树,以便可以通过语句(使用System.Linq.Expressions.Expression方法)重建语句?我正在使用VS17中的DebugView来可视化表达式,但是阅读起来不太方便。也许有更好的选择?
答案 0 :(得分:0)
(免责声明:我是有关图书馆的作者。)
使用ExpressionTreeToString上的NuGet库,您可以在表达式上调用ToString
扩展方法:
// using ExpressionToString
Expression<Func<string, int, string>> expr = (s, i) => $"{s}, {i}";
Console.WriteLine(expr.ToString("Factory methods"));
并返回如下输出:
// using static System.Linq.Expressions.Expression
Lambda(
Call(
typeof(string).GetMethod("Format"),
Constant("{0}, {1}"), s,
Convert(i,
typeof(object)
)
),
var s = Parameter(
typeof(string),
"s"
),
var i = Parameter(
typeof(int),
"i"
)
)
有关DebugView
属性使用的语法的详细信息,请参见Debugging Expression Trees in Visual Studio。