Оценить выражение C # внутри другого выражения - PullRequest
11 голосов
/ 08 августа 2011

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

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 Ответ

3 голосов
/ 08 августа 2011

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

...