'x' в previousExpression и 'x' в currentExpression считаются разными переменными. Необходимо явно указать, что одну из лямбд, например currentExpression, нужно вызывать с той же переменной, что и другую. Например, попробуйте так:
var result = Expression.OrElse(Expression.Invoke(currentExpression, previousExpression.Parameters[0]), previousExpression.Body);
И да, могли бы привести в порядок код, прежде чем вопрос задавать, минут 10 я только пытался понять что вы делаете. Вот как вы считаете, это строчка легко читается?
Expression<Func<int, bool>> filterFunctor, comparison = x=> x == corrections[1] || x == corrections[0];
Помимо того, что вы лямбду в скобки не берете, вы еще и две переменных в одном стейтменте объявляете.