public bool VisitExprQueryExpression(ExprQueryExpression expr, TCtx arg) { var res = this.Visit(expr, "QueryExpression", arg, out var argOut) && this.Accept("Left", expr.Left, argOut) && this.Accept("Right", expr.Right, argOut); this.VisitPlainProperty("QueryExpressionType", expr.QueryExpressionType, argOut); this._visitor.EndVisitExpr(expr, arg); return(res); }
public bool VisitExprQueryExpression(ExprQueryExpression exprQueryExpression, IExpr?parent) { if (ForceParenthesesForQueryExpressionPart(exprQueryExpression.Left)) { this.AcceptPar('(', exprQueryExpression.Left, ')', exprQueryExpression); } else { exprQueryExpression.Left.Accept(this, exprQueryExpression); } switch (exprQueryExpression.QueryExpressionType) { case ExprQueryExpressionType.UnionAll: this.Builder.Append(" UNION ALL "); break; case ExprQueryExpressionType.Union: this.Builder.Append(" UNION "); break; case ExprQueryExpressionType.Except: this.Builder.Append(" EXCEPT "); break; case ExprQueryExpressionType.Intersect: this.Builder.Append(" INTERSECT "); break; default: throw new ArgumentOutOfRangeException(); } if (exprQueryExpression.Right is ExprQueryExpression || ForceParenthesesForQueryExpressionPart(exprQueryExpression.Right)) { this.AcceptPar('(', exprQueryExpression.Right, ')', exprQueryExpression); } else { exprQueryExpression.Right.Accept(this, exprQueryExpression); } return(true); }
public static ExprQueryExpression WithQueryExpressionType(this ExprQueryExpression original, ExprQueryExpressionType newQueryExpressionType) => new ExprQueryExpression(left: original.Left, right: original.Right, queryExpressionType: newQueryExpressionType);
public static ExprQueryExpression WithRight(this ExprQueryExpression original, IExprSubQuery newRight) => new ExprQueryExpression(left: original.Left, right: newRight, queryExpressionType: original.QueryExpressionType);
public IQueryExpressionBuilderFinal Intersect(IQueryExpressionBuilderFinal expressionBuilder) { var expr = new ExprQueryExpression(this.BuildQueryExpression(), expressionBuilder.Done(), ExprQueryExpressionType.Intersect); return(new QueryExpressionBuilder(expr)); }
public IQueryExpressionBuilderFinal UnionAll(IQueryExpressionBuilderFinal expressionBuilder) { var expr = new ExprQueryExpression(this.BuildQueryExpression(), expressionBuilder.Done(), ExprQueryExpressionType.UnionAll); return(new QueryExpressionBuilder(expr)); }
public IQueryExpressionBuilderFinal Except(IQuerySpecificationBuilderFinal expressionBuilder) { var expr = new ExprQueryExpression(this.BuildQueryExpression(), expressionBuilder.Done(), ExprQueryExpressionType.Except); return(new QueryExpressionBuilder(expr)); }
public QueryExpressionBuilder(ExprQueryExpression queryExpression) { this._queryExpression = queryExpression; }