public Visit ( |
||
expression | The |
|
return |
public virtual SqlExpression Visit(SqlExpression expression)
{
if (expression == null)
return null;
var expressionType = expression.ExpressionType;
switch (expressionType) {
case SqlExpressionType.Add:
case SqlExpressionType.Subtract:
case SqlExpressionType.Divide:
case SqlExpressionType.Multiply:
case SqlExpressionType.Modulo:
case SqlExpressionType.And:
case SqlExpressionType.Or:
case SqlExpressionType.XOr:
case SqlExpressionType.Equal:
case SqlExpressionType.NotEqual:
case SqlExpressionType.Like:
case SqlExpressionType.NotLike:
case SqlExpressionType.GreaterThan:
case SqlExpressionType.GreaterOrEqualThan:
case SqlExpressionType.SmallerThan:
case SqlExpressionType.SmallerOrEqualThan:
case SqlExpressionType.Is:
case SqlExpressionType.IsNot:
return VisitBinary((SqlBinaryExpression) expression);
case SqlExpressionType.Negate:
case SqlExpressionType.Not:
case SqlExpressionType.UnaryPlus:
return VisitUnary((SqlUnaryExpression) expression);
case SqlExpressionType.Cast:
return VisitCast((SqlCastExpression) expression);
case SqlExpressionType.Reference:
return VisitReference((SqlReferenceExpression) expression);
case SqlExpressionType.VariableReference:
return VisitVariableReference((SqlVariableReferenceExpression) expression);
case SqlExpressionType.Assign:
return VisitAssign((SqlAssignExpression) expression);
case SqlExpressionType.FunctionCall:
return VisitFunctionCall((SqlFunctionCallExpression) expression);
case SqlExpressionType.Constant:
return VisitConstant((SqlConstantExpression) expression);
case SqlExpressionType.Conditional:
return VisitConditional((SqlConditionalExpression) expression);
case SqlExpressionType.Query:
return VisitQuery((SqlQueryExpression) expression);
case SqlExpressionType.Tuple:
return VisitTuple((SqlTupleExpression) expression);
case SqlExpressionType.All:
case SqlExpressionType.Any:
return VisitQuantified((SqlQuantifiedExpression) expression);
default:
return expression.Accept(this);
}
}
private static void Visit(SqlExpression exp, bool equals = false) { var visitor = new SqlExpressionVisitor(); var result = exp.Accept(visitor); Assert.IsType(exp.GetType(), result); Assert.Equal(equals, result.Equals(exp)); result = visitor.Visit(exp); Assert.IsType(exp.GetType(), result); Assert.Equal(equals, result.Equals(exp)); }