Exemple #1
0
        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);
        }
Exemple #3
0
 public static ExprQueryExpression WithQueryExpressionType(this ExprQueryExpression original, ExprQueryExpressionType newQueryExpressionType)
 => new ExprQueryExpression(left: original.Left, right: original.Right, queryExpressionType: newQueryExpressionType);
Exemple #4
0
 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));
        }
Exemple #8
0
 public QueryExpressionBuilder(ExprQueryExpression queryExpression)
 {
     this._queryExpression = queryExpression;
 }