Вы попробовали Автодиаметр уже? В прошлый раз, когда я попробовал его, это не было прекрасно, но это было достаточно хорошо.
Вот интересная статья, с кодом, обсуждение преобразования деревьев выражений обратно в нечто, напоминающее (примерно) исходный источник:
Преобразование деревьев выражений-лямбда-выражений в CodeDom
В качестве примечания, пробовали ли вы вызвать выражение ToString
метод?
Expression<Func<int, int, bool>> expr =
(i, j) => (i + j) * 9 == Math.Round((double)j / (i - 3), 4);
Console.WriteLine(expr.ToString());
// (i, j) => (Convert(((i + j) * 9)) = Round((Convert(j) / Convert((i - 3))), 4))
Console.WriteLine(expr.Body.ToString());
// (Convert(((i + j) * 9)) = Round((Convert(j) / Convert((i - 3))), 4))