From a7433659cdfe033cb57886ebba08ae3663880fea Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Sat, 7 May 2022 10:58:27 +0800 Subject: [PATCH] Update db.Queryable(queryable) --- .../SqlServerTest/SqlServerTest.csproj | 1 + Src/Asp.Net/SqlServerTest/UnitTest/Main.cs | 1 + .../SqlServerTest/UnitTest/UCustom019.cs | 69 +++++++++++++++++++ Src/Asp.Net/SqlSugar/SqlSugarClient.cs | 6 +- 4 files changed, 74 insertions(+), 3 deletions(-) create mode 100644 Src/Asp.Net/SqlServerTest/UnitTest/UCustom019.cs diff --git a/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj b/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj index e7d3454c9..70e6fdc68 100644 --- a/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj +++ b/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj @@ -95,6 +95,7 @@ + diff --git a/Src/Asp.Net/SqlServerTest/UnitTest/Main.cs b/Src/Asp.Net/SqlServerTest/UnitTest/Main.cs index 783bf24f0..8210451b9 100644 --- a/Src/Asp.Net/SqlServerTest/UnitTest/Main.cs +++ b/Src/Asp.Net/SqlServerTest/UnitTest/Main.cs @@ -31,6 +31,7 @@ namespace OrmTest } public static void Init() { + UCustom019.Init(); UnitManyToMany.Init(); UCustom018.Init(); UCustom017.Init(); diff --git a/Src/Asp.Net/SqlServerTest/UnitTest/UCustom019.cs b/Src/Asp.Net/SqlServerTest/UnitTest/UCustom019.cs new file mode 100644 index 000000000..fc96fd06b --- /dev/null +++ b/Src/Asp.Net/SqlServerTest/UnitTest/UCustom019.cs @@ -0,0 +1,69 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using SqlSugar; +namespace OrmTest +{ + internal class UCustom019 + { + public static void Init() + { + var db = NewUnitTest.Db; + + //建表 + if (!db.DbMaintenance.IsAnyTable("Test001", false)) + { + db.CodeFirst.InitTables(); + //用例代码 + var dataList = new List(); + dataList.Add(new Test001() { id = 1, group = 1, addTime = DateTime.Now }); + dataList.Add(new Test001() { id = 2, group = 1, addTime = DateTime.Now.AddDays(1) }); + dataList.Add(new Test001() { id = 3, group = 2, addTime = DateTime.Now.AddDays(1) }); + dataList.Add(new Test001() { id = 4, group = 2, addTime = DateTime.Now.AddDays(1) }); + dataList.Add(new Test001() { id = 5, group = 2, addTime = DateTime.Now.AddDays(1) }); + dataList.Add(new Test001() { id = 6, group = 3, addTime = DateTime.Now.AddDays(1) }); + var result = db.Insertable(dataList).ExecuteCommand();//用例代码 + } + + var defaultTime = new DateTime(1900, 1, 1); + var nowTime = DateTime.Now; + + var iQueryAble = db.Queryable() + .GroupBy(it => it.group) + .GroupBy(it => it.addTime) + .Where(it=>it.id==1) + .Select(it => new Test001_Ext + { + group = it.group, + addTime = it.addTime, + lastTime = SqlFunc.AggregateMax(SqlFunc.IIF(it.group == 1, it.addTime, defaultTime)), + lastTime2 = SqlFunc.AggregateMax(SqlFunc.IIF(it.group == 1, it.addTime, defaultTime)) + }); + var res = db.Queryable(iQueryAble) + + .InnerJoin((i, t) => i.group == t.group) + .Where((i,t)=>t.addTime < nowTime.AddDays(1)) + .ToList(); + + Console.WriteLine("用例跑完"); + Console.ReadKey(); + } + //建类 + public class Test001 + { + public int id { get; set; } + + public int group { get; set; } + + public DateTime addTime { get; set; } + } + + public class Test001_Ext : Test001 + { + public DateTime lastTime { get; set; } + public DateTime lastTime2 { get; set; } + } + } +} diff --git a/Src/Asp.Net/SqlSugar/SqlSugarClient.cs b/Src/Asp.Net/SqlSugar/SqlSugarClient.cs index b81fd5cc6..767aee07a 100644 --- a/Src/Asp.Net/SqlSugar/SqlSugarClient.cs +++ b/Src/Asp.Net/SqlSugar/SqlSugarClient.cs @@ -347,9 +347,9 @@ namespace SqlSugar var result= this.Context.Queryable(queryable); var QueryBuilder = queryable.QueryBuilder; result.QueryBuilder.IsQueryInQuery = true; - result.QueryBuilder.WhereIndex = QueryBuilder.WhereIndex++; - result.QueryBuilder.LambdaExpressions.ParameterIndex = QueryBuilder.LambdaExpressions.ParameterIndex++; - result.QueryBuilder.LambdaExpressions.Index = QueryBuilder.LambdaExpressions.Index++; + var appendIndex = result.QueryBuilder.Parameters==null?1:result.QueryBuilder.Parameters.Count+1; + result.QueryBuilder.WhereIndex = (QueryBuilder.WhereIndex+1); + result.QueryBuilder.LambdaExpressions.ParameterIndex = (QueryBuilder.LambdaExpressions.ParameterIndex+ appendIndex); return result; }