From 8dc7de40f3e2037544754918500d8ade26af83f4 Mon Sep 17 00:00:00 2001 From: sunkaixuna <610262374@qq.com> Date: Sat, 6 Nov 2021 03:25:37 +0800 Subject: [PATCH] Split table --- .../QueryableProvider/QueryableProvider.cs | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index 12b9a6279..3546e0c4e 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -893,7 +893,26 @@ namespace SqlSugar { var splitColumn = this.EntityInfo.Columns.FirstOrDefault(it => it.PropertyInfo.GetCustomAttribute() != null); var columnName = this.SqlBuilder.GetTranslationColumnName(splitColumn.DbColumnName); - return this.Where($" {columnName}>=@spBeginTime AND {columnName}<= @spEndTime",new { spBeginTime = beginTime , spEndTime = endTime}).SplitTable(tas => tas.Where(y => y.Date >= beginTime && y.Date <= endTime)); + return this.Where($" {columnName}>=@spBeginTime AND {columnName}<= @spEndTime",new { spBeginTime = beginTime , spEndTime = endTime}).SplitTable(tas => { + + var dateNull = DateTime.MinValue; + var min = tas.Where(it => it.Date <= beginTime.Date).Select(it=>it.Date).OrderByDescending(it=>it.Date).FirstOrDefault(); + var max = tas.Where(it => it.Date >= endTime.Date).Select(it => it.Date).OrderBy(it => it.Date).FirstOrDefault(); + if (max == dateNull && min == dateNull) + { + return tas.Take(1); + } + if (max == dateNull) + { + max = min; + } + if (min == dateNull) + { + min = max; + } + var result= tas.Where(y => y.Date >= min && y.Date <= max); + return result; + }); } public ISugarQueryable SplitTable(Func, IEnumerable> getTableNamesFunc) {