- 完善 WithTempQuery + FromQuery 分组嵌套;

This commit is contained in:
2881099
2022-07-25 16:08:29 +08:00
parent 9767656a87
commit a419036999
4 changed files with 242 additions and 225 deletions

View File

@ -242,23 +242,26 @@ namespace FreeSql.Internal
if (diymemexp != null && exp is MemberExpression expMem2 && expMem2.Member.Name == "Key" && expMem2.Expression.Type.FullName.StartsWith("FreeSql.ISelectGroupingAggregate`"))
{
field.Append(diymemexp._field);
string dbNestedField = null;
if (diymemexp._map.Childs.Any() == false) //处理 GroupBy(a => a.Title) ToSql(g => new { tit = a.Key }, FieldAliasOptions.AsProperty) 问题
{
if (index >= 0)
{
parent.DbNestedField = $"as{++index}";
field.Append(_common.FieldAsAlias(parent.DbNestedField));
dbNestedField = $"as{++index}";
field.Append(_common.FieldAsAlias(dbNestedField));
}
else if (string.IsNullOrEmpty(parent.CsName) == false)
{
parent.DbNestedField = GetFieldAsCsName(parent.CsName);
if (index == ReadAnonymousFieldAsCsName && diymemexp._field.EndsWith(parent.DbNestedField, StringComparison.CurrentCultureIgnoreCase) == false) //DbField 和 CsName 相同的时候,不处理
field.Append(_common.FieldAsAlias(parent.DbNestedField));
dbNestedField = GetFieldAsCsName(parent.CsName);
if (index == ReadAnonymousFieldAsCsName && diymemexp._field.EndsWith(dbNestedField, StringComparison.CurrentCultureIgnoreCase) == false) //DbField 和 CsName 相同的时候,不处理
field.Append(_common.FieldAsAlias(dbNestedField));
}
}
var parentProp = parent.Property;
diymemexp._map.CopyTo(parent);
diymemexp._map.CopyTo(parent); //可能会清空 parent.DbNestedField、CsName 值
parent.Property = parentProp; //若不加此行,会引用 GroupBy(..).ToList(a => new Dto { key = a.Key }) null 错误CopyTo 之后 Property 变为 null
if (string.IsNullOrWhiteSpace(dbNestedField) == false)
parent.DbNestedField = dbNestedField;
return false;
}
if (parent.CsType == null) parent.CsType = exp.Type;