Dodanie wywołania metody do wyrażenia Linq przy zachowaniu pełnego wyrażenia

Jak rozszerzam wyrażenie linq, zachowując jednocześnie wyrażenie? Uprościłem to trochę (aby uniknąć wklejania stron) - .e.g Pracuję z Queryable zamiast Enumerable, ale rozwiązanie tego wystarczy, ostatecznie muszę zachować to jako wyrażenie, dodając do niego wywołanie metody.

Na przykładL

        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<Func<IEnumerable<Person>, IEnumerable<Person>>> filterExp
            = list => list.Take(2);


        Expression<Func<Person, int>> 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<Func<IEnumerable<Person>, IEnumerable<Person>>>
(filterExp.AddMethodCall(orderByCallExpression)); // made up AddMethodCall but you get the idea

Przeszukałem kilkadziesiąt postów SO przez ostatnie kilka godzin i nie potrafię tego zrozumieć, mogę to zrobić, jeśli kompiluję filterExp, ale nie bez zachowania obu wyrażeń i wyniku końcowego jako wyrażenia.

questionAnswers(1)

yourAnswerToTheQuestion