Мне нужно напечатать выражение linq, как оно написано в исходном коде. Я искал решения, но до сих пор рекомендую использовать expr.ToString ().
Это не сработает для меня. Например, если у меня есть выражение:
Expression<Func<int, int>> expr = v => v + 1;
ToString () вернет v => (v + 1)
Теперь, если я сделаю небольшую модификацию вышеупомянутого случая
var a = 3;
Expression<Func<int, int>> expr = v => v + a;
затем ToString () возвращает v => (v + value(Program+<>c__DisplayClass0_0).a)
. Я ищу что-то вроде v => (v + a)
Мой текущий вариант использования состоит в том, что у меня есть набор правил, объявленных как Expression<Func<TSource, ValidationResult>>
, затем мне нужно оценить, сколько времени потребовалось для их выполнения, и для этого мне нужно правильно их пометить. ToString () для правила создаст строку, которая не очень читаема; так же, как в приведенном выше примере, все, что не определено в вызывающем классе, будет иметь префикс с длинной строкой, указывающей, откуда токен.