Merge pull request #1839 from Wolffy101/master

FieldAliasOptions 新增空的别名,解决CountDistinct 问题
This commit is contained in:
2881099 2024-06-27 15:29:24 +08:00 committed by GitHub
commit 8af2acea17
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 16 additions and 5 deletions

View File

@ -2055,6 +2055,11 @@
使用属性名作为字段别名 使用属性名作为字段别名
</summary> </summary>
</member> </member>
<member name="F:FreeSql.FieldAliasOptions.AsEmpty">
<summary>
没有别名
</summary>
</member>
<member name="M:FreeSql.ISelect0`2.Cancel(System.Func{System.Boolean})"> <member name="M:FreeSql.ISelect0`2.Cancel(System.Func{System.Boolean})">
<summary> <summary>
控制取消本次查询<para></para> 控制取消本次查询<para></para>

View File

@ -13,10 +13,15 @@ namespace FreeSql
/// </summary> /// </summary>
AsIndex, AsIndex,
/// <summary> /// <summary>
/// 使用属性名作为字段别名 /// 使用属性名作为字段别名
/// </summary> /// </summary>
AsProperty AsProperty,
/// <summary>
/// 没有字段别名
/// </summary>
AsEmpty,
} }
} }

View File

@ -443,7 +443,8 @@ namespace FreeSql.Internal.CommonProvider
{ {
var map = new ReadAnonymousTypeInfo(); var map = new ReadAnonymousTypeInfo();
var field = new StringBuilder(); 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); _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); return new ReadAnonymousTypeAfInfo(map, field.Length > 0 ? field.Remove(0, 2).ToString() : null);
@ -1362,7 +1363,7 @@ namespace FreeSql.Internal.CommonProvider
try try
{ {
var countField = "1"; 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 为了分表查询 return this.ToList<int>($"count({countField}){_commonUtils.FieldAsAlias("as1")}").Sum(); //这里的 Sum 为了分表查询
} }
finally finally
@ -1425,7 +1426,7 @@ namespace FreeSql.Internal.CommonProvider
try try
{ {
var countField = "1"; 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 为了分表查询 return (await this.ToListAsync<int>($"count({countField}){_commonUtils.FieldAsAlias("as1")}", cancellationToken)).Sum(); //这里的 Sum 为了分表查询
} }
finally finally