title: Incorrect number of arguments supplied for call to method. Expression.call(MethodInfo, Expression)
body: <p>The following code does:</p>
  
  <ol>
  <li>Creates a Lambda Expression</li>
  <li>Compiles it to a method</li>
  <li>Calls the method via Expression.Call</li>
  </ol>
  
  <p>The <a href="https://dotnetfiddle.net/d51sd0" rel="nofollow noreferrer">code</a></p>
  
  <pre><code>public static void Main()
  {
      ParameterExpression paramExpr = Expression.Parameter(typeof(int), "arg");
  
      LambdaExpression lambdaExpr = Expression.Lambda(
          Expression.Add(
              paramExpr,
              Expression.Constant(1)
          ),
          new List&lt;ParameterExpression&gt;() { paramExpr }
      );
  
      Console.WriteLine(lambdaExpr);
  
      var method = lambdaExpr.Compile().Method;
  
      var expressions = new Expression[]
      {
          Expression.Constant(5)
      };
      Expression.Call(method, expressions);
  
  }
  </code></pre>
  
  <p>The error</p>
  
  <blockquote>
    <p>Run-time exception (line 27): Incorrect number of arguments supplied
    for call to method 'Int32
    lambda_method(System.Runtime.CompilerServices.Closure, Int32)'</p>
  </blockquote>
  
  <p>Where did the System.Runtime.CompilerServices.Closure, come from?</p>
  
  <p>How do I invoke this method using  Expression.Call?</p>
  
  <p>I know there are other ways of achieving the same goal, like calling <code>lambdaExpr.Compile().DynamicInvoke()</code> but, due to constraints, I need to do it in the above way.</p>