protected override Expression VisitBinary(BinaryExpression expr) { BinaryExpressionTypeFinder left = new BinaryExpressionTypeFinder(); left.Visit(expr.Left); if (left.Type == BinaryCriterionType.None) return base.VisitBinary(expr); BinaryExpressionTypeFinder right = new BinaryExpressionTypeFinder(); right.Visit(expr.Right); if (right.Type == BinaryCriterionType.None) return base.VisitBinary(expr); if (right.Type == BinaryCriterionType.Property) { if (left.Type == BinaryCriterionType.Criteria || left.Type == BinaryCriterionType.Value) { return Swap(expr); } } else if (right.Type == BinaryCriterionType.Value) { if (left.Type == BinaryCriterionType.Criteria) { return Swap(expr); } } return expr; }
protected override Expression VisitBinary(BinaryExpression expr) { BinaryExpressionTypeFinder left = new BinaryExpressionTypeFinder(); left.Visit(expr.Left); if (left.Type == BinaryCriterionType.None) { return(base.VisitBinary(expr)); } BinaryExpressionTypeFinder right = new BinaryExpressionTypeFinder(); right.Visit(expr.Right); if (right.Type == BinaryCriterionType.None) { return(base.VisitBinary(expr)); } if (right.Type == BinaryCriterionType.Property) { if (left.Type == BinaryCriterionType.Criteria || left.Type == BinaryCriterionType.Value) { return(Swap(expr)); } } else if (right.Type == BinaryCriterionType.Value) { if (left.Type == BinaryCriterionType.Criteria) { return(Swap(expr)); } } return(expr); }