diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/SugarProvider/SqlSugarAccessory.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/SugarProvider/SqlSugarAccessory.cs index d55a2922e..5db293910 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/SugarProvider/SqlSugarAccessory.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/SugarProvider/SqlSugarAccessory.cs @@ -353,6 +353,40 @@ namespace SqlSugar #endregion #region Private methods + private void _ThenMapper(IEnumerable list, Action action) + { + MapperContext result = new MapperContext(); + result.context = this.Context; + if (result.context.TempItems == null) + { + result.context.TempItems = new Dictionary(); + } + var key = "Queryable_To_Context"; + result.context.TempItems.Add(key, result); + result.list = list.ToList(); + foreach (var item in list) + { + action.Invoke(item); + } + result.context.TempItems.Remove(key); + } + private async Task _ThenMapperAsync(IEnumerable list, Func action) + { + MapperContext result = new MapperContext(); + result.context = this.Context; + if (result.context.TempItems == null) + { + result.context.TempItems = new Dictionary(); + } + var key = "Queryable_To_Context"; + result.context.TempItems.Add(key, result); + result.list = list.ToList(); + foreach (var item in list) + { + await action.Invoke(item); + } + result.context.TempItems.Remove(key); + } internal string GetN() { var N = "N"; diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/SugarProvider/SqlSugarProvider.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/SugarProvider/SqlSugarProvider.cs index 1efad017f..048b95f62 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/SugarProvider/SqlSugarProvider.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/SugarProvider/SqlSugarProvider.cs @@ -1665,37 +1665,18 @@ namespace SqlSugar } public void ThenMapper(IEnumerable list, Action action) { - MapperContext result = new MapperContext(); - result.context = this.Context; - if (result.context.TempItems == null) + this.Context.Utilities.PageEach(list, 200, pageList => { - result.context.TempItems = new Dictionary(); - } - var key = "Queryable_To_Context"; - result.context.TempItems.Add(key, result); - result.list = list.ToList(); - foreach (var item in list) - { - action.Invoke(item); - } - result.context.TempItems.Remove(key); + _ThenMapper(pageList, action); + }); } + public async Task ThenMapperAsync(IEnumerable list, Func action) { - MapperContext result = new MapperContext(); - result.context = this.Context; - if (result.context.TempItems == null) + await this.Context.Utilities.PageEachAsync(list, 200,async pageList => { - result.context.TempItems = new Dictionary(); - } - var key = "Queryable_To_Context"; - result.context.TempItems.Add(key, result); - result.list = list.ToList(); - foreach (var item in list) - { - await action.Invoke(item); - } - result.context.TempItems.Remove(key); + await _ThenMapperAsync(pageList, action); + }); } #endregion }