Update db.Queryable(queryable)

This commit is contained in:
sunkaixuan 2022-05-07 10:58:27 +08:00
parent 9534c8fae6
commit a7433659cd
4 changed files with 74 additions and 3 deletions

View File

@ -95,6 +95,7 @@
<Compile Include="Models\OrderItem.cs" /> <Compile Include="Models\OrderItem.cs" />
<Compile Include="Demo\Demo0_SqlSugarClient.cs" /> <Compile Include="Demo\Demo0_SqlSugarClient.cs" />
<Compile Include="Models\ViewOrder.cs" /> <Compile Include="Models\ViewOrder.cs" />
<Compile Include="UnitTest\UCustom019.cs" />
<Compile Include="UnitTest\UintDynamic.cs" /> <Compile Include="UnitTest\UintDynamic.cs" />
<Compile Include="UnitTest\UnitManyToMany.cs" /> <Compile Include="UnitTest\UnitManyToMany.cs" />
<Compile Include="UnitTest\UCustom018.cs" /> <Compile Include="UnitTest\UCustom018.cs" />

View File

@ -31,6 +31,7 @@ namespace OrmTest
} }
public static void Init() public static void Init()
{ {
UCustom019.Init();
UnitManyToMany.Init(); UnitManyToMany.Init();
UCustom018.Init(); UCustom018.Init();
UCustom017.Init(); UCustom017.Init();

View File

@ -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<Test001>();
//用例代码
var dataList = new List<Test001>();
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<Test001>()
.GroupBy(it => it.group)
.GroupBy(it => it.addTime)
.Where(it=>it.id==1)
.Select<Test001_Ext>(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<Test001>((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; }
}
}
}

View File

@ -347,9 +347,9 @@ namespace SqlSugar
var result= this.Context.Queryable<T>(queryable); var result= this.Context.Queryable<T>(queryable);
var QueryBuilder = queryable.QueryBuilder; var QueryBuilder = queryable.QueryBuilder;
result.QueryBuilder.IsQueryInQuery = true; result.QueryBuilder.IsQueryInQuery = true;
result.QueryBuilder.WhereIndex = QueryBuilder.WhereIndex++; var appendIndex = result.QueryBuilder.Parameters==null?1:result.QueryBuilder.Parameters.Count+1;
result.QueryBuilder.LambdaExpressions.ParameterIndex = QueryBuilder.LambdaExpressions.ParameterIndex++; result.QueryBuilder.WhereIndex = (QueryBuilder.WhereIndex+1);
result.QueryBuilder.LambdaExpressions.Index = QueryBuilder.LambdaExpressions.Index++; result.QueryBuilder.LambdaExpressions.ParameterIndex = (QueryBuilder.LambdaExpressions.ParameterIndex+ appendIndex);
return result; return result;
} }