diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select0ProviderReader.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select0ProviderReader.cs index 079c25e2..408d1193 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select0ProviderReader.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select0ProviderReader.cs @@ -711,12 +711,21 @@ namespace FreeSql.Internal.CommonProvider protected TReturn InternalToAggregate(Expression select) { - var map = new ReadAnonymousTypeInfo(); - var field = new StringBuilder(); - var index = 0; + var tmpOrderBy = _orderby; + _orderby = null; //解决 select count(1) from t order by id 这样的 SQL 错误 + try + { + var map = new ReadAnonymousTypeInfo(); + var field = new StringBuilder(); + var index = 0; - _commonExpression.ReadAnonymousField(_tables, field, map, ref index, select, null, null, _whereCascadeExpression, null, false); //不走 DTO 映射,不处理 IncludeMany - return this.ToListMapReader(new ReadAnonymousTypeAfInfo(map, field.Length > 0 ? field.Remove(0, 2).ToString() : null)).FirstOrDefault(); + _commonExpression.ReadAnonymousField(_tables, field, map, ref index, select, null, null, _whereCascadeExpression, null, false); //不走 DTO 映射,不处理 IncludeMany + return this.ToListMapReader(new ReadAnonymousTypeAfInfo(map, field.Length > 0 ? field.Remove(0, 2).ToString() : null)).FirstOrDefault(); + } + finally + { + _orderby = tmpOrderBy; + } } public TSelect InternalWhere(Expression exp) => exp == null ? this as TSelect : this.Where(_commonExpression.ExpressionWhereLambda(_tables, exp, null, _whereCascadeExpression, _params)); @@ -967,12 +976,21 @@ namespace FreeSql.Internal.CommonProvider async protected Task InternalToAggregateAsync(Expression select) { - var map = new ReadAnonymousTypeInfo(); - var field = new StringBuilder(); - var index = 0; + var tmpOrderBy = _orderby; + _orderby = null; //解决 select count(1) from t order by id 这样的 SQL 错误 + try + { + var map = new ReadAnonymousTypeInfo(); + var field = new StringBuilder(); + var index = 0; - _commonExpression.ReadAnonymousField(_tables, field, map, ref index, select, null, null, _whereCascadeExpression, null, false); //不走 DTO 映射,不处理 IncludeMany - return (await this.ToListMapReaderAsync(new ReadAnonymousTypeAfInfo(map, field.Length > 0 ? field.Remove(0, 2).ToString() : null))).FirstOrDefault(); + _commonExpression.ReadAnonymousField(_tables, field, map, ref index, select, null, null, _whereCascadeExpression, null, false); //不走 DTO 映射,不处理 IncludeMany + return (await this.ToListMapReaderAsync(new ReadAnonymousTypeAfInfo(map, field.Length > 0 ? field.Remove(0, 2).ToString() : null))).FirstOrDefault(); + } + finally + { + _orderby = tmpOrderBy; + } } #endif #endregion