public virtual void Visiting(SqlMathExpression mathExpression) { mathExpression.LeftOperand.Accept(this) ; switch(mathExpression.SqlMathOperator) { case SqlMathOperatorType.Add: { sqlBuilder.Append("+"); break; } case SqlMathOperatorType.Divide: { sqlBuilder.Append("/"); break; } case SqlMathOperatorType.Multiply: { sqlBuilder.Append("*"); break; } case SqlMathOperatorType.Subtract: { sqlBuilder.Append("-"); break; } } mathExpression.RightOperand.Accept(this) ; }
public virtual void Visited(SqlMathExpression mathExpression) { }
private SqlExpression EvalMath(NPathMathExpression mathExpression) { SqlExpression leftExpression = EvalExpression(mathExpression.LeftOperand); SqlExpression rightExpression = EvalExpression(mathExpression.RightOperand); SqlMathOperatorType mathOperator ; switch(mathExpression.Operator) { case "add": mathOperator = SqlMathOperatorType.Add; break; case "minus": mathOperator = SqlMathOperatorType.Subtract; break; case "div": mathOperator = SqlMathOperatorType.Divide; break; case "mul": mathOperator = SqlMathOperatorType.Multiply; break; default: throw new IAmOpenSourcePleaseImplementMeException("Operator not implemented"); } SqlMathExpression predicate = new SqlMathExpression(leftExpression,mathOperator,rightExpression); return predicate; }