Skip to content

Commit

Permalink
Merge pull request #1839 from Wolffy101/master
Browse files Browse the repository at this point in the history
FieldAliasOptions 新增空的别名,解决CountDistinct 问题
  • Loading branch information
2881099 committed Jun 27, 2024
2 parents f1fd003 + 2290606 commit 8af2ace
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 5 deletions.
5 changes: 5 additions & 0 deletions FreeSql/FreeSql.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 7 additions & 2 deletions FreeSql/Interface/Curd/ISelect/FieldAliasOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,15 @@ public enum FieldAliasOptions
/// </summary>
AsIndex,


/// <summary>
/// 使用属性名作为字段别名
/// </summary>
AsProperty
AsProperty,

/// <summary>
/// 没有字段别名
/// </summary>
AsEmpty,
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -443,7 +443,8 @@ public ReadAnonymousTypeAfInfo GetExpressionField(Expression newexp, FieldAliasO
{
var map = new ReadAnonymousTypeInfo();
var field = new StringBuilder();
var index = fieldAlias == FieldAliasOptions.AsProperty ? CommonExpression.ReadAnonymousFieldAsCsName : 0;
var index = fieldAlias == FieldAliasOptions.AsProperty ? CommonExpression.ReadAnonymousFieldAsCsName :
(fieldAlias == FieldAliasOptions.AsEmpty ? CommonExpression.ReadAnonymousFieldAsCsNameGroupBy : 0);

_commonExpression.ReadAnonymousField(_tables, _tableRule, field, map, ref index, newexp, this, _diymemexpWithTempQuery, _whereGlobalFilter, null, null, true);
return new ReadAnonymousTypeAfInfo(map, field.Length > 0 ? field.Remove(0, 2).ToString() : null);
Expand Down Expand Up @@ -1362,7 +1363,7 @@ public long Count()
try
{
var countField = "1";
if (tmpDistinct && _selectExpression != null) countField = $"distinct {this.GetExpressionField(_selectExpression, FieldAliasOptions.AsProperty).field}";
if (tmpDistinct && _selectExpression != null) countField = $"distinct {this.GetExpressionField(_selectExpression, FieldAliasOptions.AsEmpty).field}";
return this.ToList<int>($"count({countField}){_commonUtils.FieldAsAlias("as1")}").Sum(); //这里的 Sum 为了分表查询
}
finally
Expand Down Expand Up @@ -1425,7 +1426,7 @@ async public Task<long> CountAsync(CancellationToken cancellationToken = default
try
{
var countField = "1";
if (tmpDistinct && _selectExpression != null) countField = $"distinct {this.GetExpressionField(_selectExpression, FieldAliasOptions.AsProperty).field}";
if (tmpDistinct && _selectExpression != null) countField = $"distinct {this.GetExpressionField(_selectExpression, FieldAliasOptions.AsEmpty).field}";
return (await this.ToListAsync<int>($"count({countField}){_commonUtils.FieldAsAlias("as1")}", cancellationToken)).Sum(); //这里的 Sum 为了分表查询
}
finally
Expand Down

0 comments on commit 8af2ace

Please sign in to comment.