/// <summary>
 /// 初始化 <see cref="AggregateSubqueryExpression"/> 类的新实例。
 /// </summary>
 /// <param name="groupByAlias">分组表的别名。</param>
 /// <param name="aggregateInGroupSelect">聚合运算表达式。</param>
 /// <param name="aggregateAsSubquery">聚合子查询表达式。</param>
 public AggregateSubqueryExpression(TableAlias groupByAlias, Expression aggregateInGroupSelect, ScalarExpression aggregateAsSubquery)
     : base(DbExpressionType.AggregateSubquery, aggregateAsSubquery.Type)
 {
     AggregateInGroupSelect = aggregateInGroupSelect;
     GroupByAlias           = groupByAlias;
     AggregateAsSubquery    = aggregateAsSubquery;
 }
 /// <summary>
 /// 更新 <see cref="AggregateSubqueryExpression"/> 对象。
 /// </summary>
 /// <param name="subquery">聚合子查询表达式。</param>
 /// <returns></returns>
 public AggregateSubqueryExpression Update(ScalarExpression subquery)
 {
     if (subquery != AggregateAsSubquery)
     {
         return(new AggregateSubqueryExpression(GroupByAlias, AggregateInGroupSelect, subquery));
     }
     return(this);
 }
Exemplo n.º 3
0
        /// <summary>
        /// 访问 <see cref="ScalarExpression"/>。
        /// </summary>
        /// <param name="scalar">要访问的表达式。</param>
        /// <returns></returns>
        protected virtual Expression VisitScalar(ScalarExpression scalar)
        {
            var select = (SelectExpression)Visit(scalar.Select);

            return(scalar.Update(select));
        }