예제 #1
0
 public AggregateSubqueryExpression(TableAlias groupByAlias, Expression aggregateInGroupSelect, ScalarExpression aggregateAsSubquery)
     : base(DbExpressionType.AggregateSubquery, aggregateAsSubquery.Type)
 {
     this.aggregateInGroupSelect = aggregateInGroupSelect;
     this.groupByAlias           = groupByAlias;
     this.aggregateAsSubquery    = aggregateAsSubquery;
 }
예제 #2
0
 protected ScalarExpression UpdateScalar(ScalarExpression scalar, SelectExpression select)
 {
     if (select != scalar.Select)
     {
         return(new ScalarExpression(scalar.Type, select));
     }
     return(scalar);
 }
예제 #3
0
 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);
 }
예제 #4
0
 protected AggregateSubqueryExpression UpdateAggregateSubquery(AggregateSubqueryExpression aggregate, ScalarExpression subquery)
 {
     if (subquery != aggregate.AggregateAsSubquery)
     {
         return(new AggregateSubqueryExpression(aggregate.GroupByAlias, aggregate.AggregateInGroupSelect, subquery));
     }
     return(aggregate);
 }
예제 #5
0
        protected virtual Expression VisitScalar(ScalarExpression scalar)
        {
            var select = (SelectExpression)this.Visit(scalar.Select);

            return(this.UpdateScalar(scalar, select));
        }
예제 #6
0
 protected virtual bool CompareScalar(ScalarExpression a, ScalarExpression b)
 {
     return(this.Compare(a.Select, b.Select));
 }