Search code examples
c#linq

How to add another condition to an expression?


I have an expression like this:

Expression<Func<int, bool>> exp = i => i<15 && i>10;

I want to add a condition to exp after this line. How can I do this?


Solution

  • Simply with this:

    Expression<Func<int, bool>> exp = i => i < 15 && i > 10;
    var compiled = exp.Compile();
    exp = i => compiled(i) && i % 2 == 0;  //example additional condition
    

    Note that you can't do it like this:

    exp = i => exp.Compile()(i) && i % 2 == 0; //example additional condition

    because exp will be added to the closure by reference and as a result, calling it will cause a StackOverflowException.