Добавление вызова метода к выражению Linq, оставаясь при этом полным выражением
Как я могу расширить выражение linq, сохраняя при этом выражение? Я'мы немного упростили это (чтобы не вставлять страницы) - например, я работаю с Queryable, а не с Enumerable, но решения для этого будет достаточно, в конечном счете мне нужно сохранить его как выражение при добавлении вызова метода.
Например ЛИ
var p1 = new Person() {Name = "RDA1", Age = 27};
var p2 = new Person() {Name = "RDA2", Age = 28};
var p3 = new Person() {Name = "RDA3", Age = 29};
var people = new[] {p1, p2, p3};
Expression filterExp
= list => list.Take(2);
Expression sortExp = l => l.Age;
MethodCallExpression orderByCallExpression = Expression.Call(
typeof (Enumerable),
"OrderByDescending",
new Type[] {typeof (Person), typeof (int)},
filterExp.Parameters[0],
sortExp);
var combinedExpression = Expression.Lambda
(filterExp.AddMethodCall(orderByCallExpression)); // made up AddMethodCall but you get the idea
за последние несколько часов я искал десятки сообщений SO, и я могуКажется, я не могу этого понять, я могу сделать это, если скомпилирую filterExp, но не без сохранения как выражений, так и конечного результата.