/// <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); }
/// <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)); }