У меня есть список и запрос, который просто определяется как это:
var list = new List<int>();
for (var i = 0; i < 4; i++)
{
list.Add(i);
}
var query = list.AsQueryable();
Теперь у меня есть Expression
которое возвращает квадрат числа:
private static Expression<Func<int, int>> Square()
{
return i => i * i;
}
и третья сила:
private static Expression<Func<int, int>> Third()
{
return i => i * i * i;
}
Я хочу, чтобы иметь возможность выбрать сумму из них в выражении Select
с кодом, подобным этому псевдокоду:
var result = query.Select(Square() + Third()).ToList();
Я ожидаю, что результат будет
0
2
12
36
Есть ли способ легко достичь этого, или я должен сделать это по-другому?
PS имейте в виду, методы упрощены, чтобы подчеркнуть для удобства определения проблемы.
PS Я использую выражения, потому что это упрощённый пример проблемы Linq-to-entities, и я понял, что я могу использовать только IQueryable
по этому вопросу.
Если вам нужны деревья выражений, используйте метод Expression.Add
static на Square().Body
и Third().Body
.
Если вам просто нужны делегаты, используйте x => Square().Compile()(x) + Third().Compile()(x)
.
Expression.Add
является основным компонентом.
Cube()
, а неThird()
.