Вычислить выражение С# внутри другого выражения
Я хочу использовать выражение в другом:
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.