Добрый день.
Просматривая недавно чужой код, наткнулся на довольно интересную задачу о IQueryable и Expession trees. Надеюсь, решение будет кому-нибудь полезно.
Задача заключается в том, чтобы повторно использовать некоторый Expression внутри другого Expression, например, у нас есть некий
f:
Expression<Func<int, int, int>> f = (a, b) => a + b;
И мы бы хотели использовать этот
f внтури другого expression, например так:
Expression<Func<int, int, int, int>> g = (a, b, c) => f(a+b,b)*c;
Причем необходимо, чтобы результирующий expression был «чистым», т.е. пригодным для использования внутри IQueryable (без скомпилированных функций и т.п.)