private Expression VisitAll(Expression expression) { // Run all visitors in order var visitors = new ExpressionVisitor[] { this }.Concat(Visitors); return(visitors.Aggregate(expression, (expr, visitor) => visitor.Visit(expr))); }
private Expression VisitAllAndOptimize(Expression expression) { // Run all visitors in order var visitors = new ExpressionVisitor[] { this }.Concat(_visitors); var translated = visitors.Aggregate(expression, (expr, visitor) => visitor.Visit(expr)); var optimized = OptimizeExpression(translated); return(optimized); }