コード例 #1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="AggregateSubqueryExpression"/> class.
 /// </summary>
 /// <param name="groupByAlias">The group by alias.</param>
 /// <param name="aggregateInGroupSelect">The aggregate in group select.</param>
 /// <param name="aggregateAsSubquery">The aggregate as subquery.</param>
 public AggregateSubqueryExpression(TableAlias groupByAlias, Expression aggregateInGroupSelect, ScalarExpression aggregateAsSubquery)
     : base(DbExpressionType.AggregateSubquery, aggregateAsSubquery.Type)
 {
     this.AggregateInGroupSelect = aggregateInGroupSelect;
     this.GroupByAlias           = groupByAlias;
     this.AggregateAsSubquery    = aggregateAsSubquery;
 }
コード例 #2
0
        /// <summary>
        /// Updates the scalar.
        /// </summary>
        /// <param name="scalar">The scalar.</param>
        /// <param name="select">The select.</param>
        /// <returns></returns>
        protected ScalarExpression UpdateScalar(ScalarExpression scalar, SelectExpression select)
        {
            if (select != scalar.Select)
            {
                return(new ScalarExpression(scalar.Type, select));
            }

            return(scalar);
        }
コード例 #3
0
 /// <summary>
 /// Compares the scalar.
 /// </summary>
 /// <param name="a">A.</param>
 /// <param name="b">The b.</param>
 /// <returns></returns>
 protected virtual bool CompareScalar(ScalarExpression a, ScalarExpression b)
 {
     return(this.Compare(a.Select, b.Select));
 }
コード例 #4
0
        /// <summary>
        /// Updates the aggregate subquery.
        /// </summary>
        /// <param name="aggregate">The aggregate.</param>
        /// <param name="subquery">The subquery.</param>
        /// <returns></returns>
        protected AggregateSubqueryExpression UpdateAggregateSubquery(AggregateSubqueryExpression aggregate, ScalarExpression subquery)
        {
            if (subquery != aggregate.AggregateAsSubquery)
            {
                return(new AggregateSubqueryExpression(aggregate.GroupByAlias, aggregate.AggregateInGroupSelect, subquery));
            }

            return(aggregate);
        }
コード例 #5
0
        /// <summary>
        /// Visits the scalar.
        /// </summary>
        /// <param name="scalar">The scalar.</param>
        /// <returns></returns>
        protected virtual Expression VisitScalar(ScalarExpression scalar)
        {
            var select = (SelectExpression)this.Visit(scalar.Select);

            return(this.UpdateScalar(scalar, select));
        }