Как восстановить дерево выражений linq - PullRequest
2 голосов
/ 11 апреля 2019

Как проверить дерево выражений linq, чтобы его можно было перестроить оператор за оператором (используя методы System.Linq.Expressions.Expression)?Я использую DebugView из VS17 для визуализации выражения, но он не очень удобен для чтения.Может есть варианты получше?

1 Ответ

0 голосов
/ 21 мая 2019

(Отказ от ответственности: я автор рассматриваемой библиотеки.)

Используя библиотеку 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, см. Синтаксис DebugView .

...