title: Adding a method call to a Linq Expression whilst remaining an full expression
body: <p>How I do extend an linq expression whilst keeping it an expression? I've simplified this quite a bit (to avoid pasting pages) - .e.g I working with Queryable rather than Enumerable, but the solution for this will suffice, ultimately I need to keep it as an expression whilst adding a method call to it. </p>
  
  <p>For exampleL</p>
  
  <pre><code>        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&lt;Func&lt;IEnumerable&lt;Person&gt;, IEnumerable&lt;Person&gt;&gt;&gt; filterExp
              = list =&gt; list.Take(2);
  
  
          Expression&lt;Func&lt;Person, int&gt;&gt; sortExp = l =&gt; l.Age;
  
  
          MethodCallExpression orderByCallExpression = Expression.Call(
              typeof (Enumerable),
              "OrderByDescending",
              new Type[] {typeof (Person), typeof (int)},
              filterExp.Parameters[0],
              sortExp); 
  
  var combinedExpression = Expression.Lambda&lt;Func&lt;IEnumerable&lt;Person&gt;, IEnumerable&lt;Person&gt;&gt;&gt;
  (filterExp.AddMethodCall(orderByCallExpression)); // made up AddMethodCall but you get the idea
  </code></pre>
  
  <p>I've searched dozens of SO posts for the past few hours and I can't seem to figure this out,
  I can do it if I compile filterExp but not without keeping both expressions and end result an expression.</p>