From 670d29dc9534cf7a7a0497ba28a7a1ee721b2fd5 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Fri, 13 May 2022 17:18:10 +0800 Subject: [PATCH] Update Core --- .../QueryableProvider/NavigatManager.cs | 29 +++++++++++++++---- .../QueryableProvider/QueryableProvider.cs | 6 ++-- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/NavigatManager.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/NavigatManager.cs index 419a35550..59f596690 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/NavigatManager.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/NavigatManager.cs @@ -323,28 +323,45 @@ namespace SqlSugar var navList = selector(this.Context.Queryable().AS(navEntityInfo.DbTableName).AddParameters(sqlObj.Parameters).Where(conditionalModels).WhereIF(sqlObj.WhereString.HasValue(), sqlObj.WhereString).Select(sqlObj.SelectString).OrderByIF(sqlObj.OrderByString.HasValue(), sqlObj.OrderByString)); if (navList.HasValue()) { - foreach (var item in list) + //var setValue = navList + // .Where(x => navColumn.PropertyInfo.GetValue(x).ObjToString() == listItemPkColumn.PropertyInfo.GetValue(item).ObjToString()).ToList(); + var GroupQuery = (from l in list + join n in navList + on listItemPkColumn.PropertyInfo.GetValue(l).ObjToString() + equals navColumn.PropertyInfo.GetValue(n).ObjToString() + select new + { + l, + n + }).GroupBy(it=>it.l).ToList(); + foreach (var item in GroupQuery) { - var setValue = navList - .Where(x => navColumn.PropertyInfo.GetValue(x).ObjToString() == listItemPkColumn.PropertyInfo.GetValue(item).ObjToString()).ToList(); - + if (sqlObj.MappingExpressions.HasValue()) { MappingFieldsHelper helper = new MappingFieldsHelper(); helper.NavEntity = navEntityInfo; helper.Context = this.Context; helper.RootEntity = this.Context.EntityMaintenance.GetEntityInfo(); - helper.SetChildList(navObjectNameColumnInfo, item,setValue,sqlObj.MappingExpressions); + helper.SetChildList(navObjectNameColumnInfo, item.Key,item.Select(it=>it.n).ToList(),sqlObj.MappingExpressions); } else { var instance = Activator.CreateInstance(navObjectNamePropety.PropertyType, true); var ilist = instance as IList; - foreach (var value in setValue) + foreach (var value in item.Select(it => it.n).ToList()) { ilist.Add(value); } + navObjectNamePropety.SetValue(item.Key, instance); + } + } + foreach (var item in list) + { + if (navObjectNamePropety.GetValue(item) == null) + { + var instance = Activator.CreateInstance(navObjectNamePropety.PropertyType, true); navObjectNamePropety.SetValue(item, instance); } } diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index 0cc961e34..d3aa2efe7 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -2122,10 +2122,10 @@ namespace SqlSugar this.Context.MappingTables = oldMapping; return await this.Clone().ToPageListAsync(pageIndex, pageSize); } - public Task> ToPageListAsync(int pageNumber, int pageSize, RefAsync totalNumber, RefAsync totalPage) + public async Task> ToPageListAsync(int pageNumber, int pageSize, RefAsync totalNumber, RefAsync totalPage) { - var result = ToPageListAsync(pageNumber, pageSize, totalNumber); - totalPage.Value = (totalNumber + pageSize - 1) / pageSize; + var result =await ToPageListAsync(pageNumber, pageSize, totalNumber); + totalPage.Value = (totalNumber.Value + pageSize - 1) / pageSize; return result; } public async Task ToJsonAsync()