Вычислить выражение С# внутри другого выражения

Я хочу использовать выражение в другом:

Expression<Func<double, double>> f = x => x * x * 27 + blah ... expression with x;

Expression<Func<double, double>> g = y => 3 + 8 * f.Compile()(y) * y * blah... expression with y and f(y);

Это не будет работать при отправке в LINQ to SQL, потому что f.Compile() неизвестен SQL.

Как вы оцениваете выражение f в переменной y без его компиляции, но все же используете обычный синтаксис для определения g?

Мне не нужно определять все g с некоторыми нечитаемыми инструкциями Expression.Add/Expression.Multiply и т.д.

Спасибо.

Ответ 1

Посмотрите Функции вызова в запросах LINQ и LINQ Extensions. Часть CLinq не имеет отношения к вашему вопросу, но также включает библиотеку LinqExt, которая именно вы ищите. Тот же подход также используется LinqKit, который также предоставляет другие полезные расширения для Linq.