protected VfpExpression VisitJoin(VfpJoinExpression join) { VisitSource(join.Left); WriteLine(Indentation.Same); switch (join.ExpressionKind) { case VfpExpressionKind.CrossJoin: Write(", "); break; case VfpExpressionKind.InnerJoin: Write("INNER JOIN "); break; case VfpExpressionKind.LeftOuterJoin: Write("LEFT OUTER JOIN "); break; default: throw new NotSupportedException(join.ExpressionKind.ToString()); } VisitSource(join.Right); if (join.JoinCondition != null) { WriteLine(Indentation.Inner); Write("ON "); VisitPredicate(join.JoinCondition); Indent(Indentation.Outer); } return(join); }
public override VfpExpression Visit(VfpJoinExpression expression) { var result = base.Visit(expression); expression = result as VfpJoinExpression; if (expression == null) { return(result); } var filterExpression = expression.Left.Expression as VfpFilterExpression; if (IsZeroEqualsZero(filterExpression)) { expression = VfpExpressionBuilder.Join(expression.ExpressionKind, expression.ResultType, filterExpression.Input, expression.Right, expression.JoinCondition); } filterExpression = expression.Right.Expression as VfpFilterExpression; if (IsZeroEqualsZero(filterExpression)) { expression = VfpExpressionBuilder.Join(expression.ExpressionKind, expression.ResultType, expression.Left, filterExpression.Input, expression.JoinCondition); } return(expression); }
public virtual VfpExpression Visit(VfpJoinExpression expression) { return(new VfpJoinExpression(expression.ExpressionKind, expression.ResultType, VisitVfpExpressionBinding(expression.Left), VisitVfpExpressionBinding(expression.Right), expression.JoinCondition.Accept(this))); }
public override VfpExpression Visit(VfpJoinExpression expression) { throw new NotImplementedException(); }