From 73d8edbd5288658de2fada52be95a1df59d1fa29 Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@qq.com> Date: Wed, 7 Sep 2022 20:33:29 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BF=AE=E5=A4=8D=20WithTempQuery=20+=20Co?= =?UTF-8?q?lumn=20+=20GroupBy=20+=20Key=20=E6=8C=87=E5=AE=9A=E5=88=97?= =?UTF-8?q?=E5=90=8D=E7=9A=84=E9=97=AE=E9=A2=98=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SelectProvider/SelectGroupingProvider.cs | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/SelectGroupingProvider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/SelectGroupingProvider.cs index c70d58c2..fd420763 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/SelectGroupingProvider.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/SelectGroupingProvider.cs @@ -243,9 +243,24 @@ namespace FreeSql.Internal.CommonProvider ret._whereGlobalFilter = new List(_select._whereGlobalFilter.ToArray()); ret._cancel = _select._cancel; if (ret._tables[0].Table == null) ret._tables[0].Table = TableInfo.GetDefaultTable(typeof(TDto)); + Select0Provider.WithTempQueryParser parser = null; _addFieldAlias = true; //解决:[Column(Name = "flevel") 与属性名不一致时,嵌套查询 bug - var parser = new Select0Provider.WithTempQueryParser(_select, this, selector, ret._tables[0]); - _addFieldAlias = false; + var old_field = _field; + var fieldsb = new StringBuilder(); + foreach (var child in _map.GetAllChilds()) + fieldsb.Append(", ").Append(child.DbField).Append(_comonExp.EndsWithDbNestedField(child.DbField, child.DbNestedField) ? "" : _comonExp._common.FieldAsAlias(child.DbNestedField)); + _field = fieldsb.ToString(); + fieldsb.Clear(); + try + { + parser = new Select0Provider.WithTempQueryParser(_select, this, selector, ret._tables[0]); + } + finally + { + fieldsb.Clear(); + _field = old_field; + _addFieldAlias = false; + } var sql = $"\r\n{this.ToSql(parser._insideSelectList[0].InsideField)}"; ret.WithSql(sql); ret._diymemexpWithTempQuery = parser;