public AggregateSubqueryExpression(TableAlias groupByAlias, Expression aggregateInGroupSelect, ScalarExpression aggregateAsSubquery) : base(DbExpressionType.AggregateSubquery, aggregateAsSubquery.Type) { this.aggregateInGroupSelect = aggregateInGroupSelect; this.groupByAlias = groupByAlias; this.aggregateAsSubquery = aggregateAsSubquery; }
protected ScalarExpression UpdateScalar(ScalarExpression scalar, SelectExpression select) { if (select != scalar.Select) { return(new ScalarExpression(scalar.Type, select)); } return(scalar); }
protected override Expression VisitScalar(ScalarExpression subquery) { this.Write("("); this.WriteLine(Indentation.Inner); this.Visit(subquery.Select); this.WriteLine(Indentation.Same); this.Write(")"); this.Indent(Indentation.Outer); return(subquery); }
protected virtual bool CompareScalar(ScalarExpression a, ScalarExpression b) { return(this.Compare(a.Select, b.Select)); }
protected AggregateSubqueryExpression UpdateAggregateSubquery(AggregateSubqueryExpression aggregate, ScalarExpression subquery) { if (subquery != aggregate.AggregateAsSubquery) { return(new AggregateSubqueryExpression(aggregate.GroupByAlias, aggregate.AggregateInGroupSelect, subquery)); } return(aggregate); }
protected virtual Expression VisitScalar(ScalarExpression scalar) { var select = (SelectExpression)this.Visit(scalar.Select); return(this.UpdateScalar(scalar, select)); }