mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-19 10:08:19 +08:00
Update exp to sql
This commit is contained in:
@@ -17,25 +17,42 @@ namespace SqlSugar
|
||||
express.IfTrue,
|
||||
express.IfFalse
|
||||
};
|
||||
if (express.Test is MemberExpression memberExpression)
|
||||
if (ExpressionTool.GetParameters(express.Test).Count == 0)
|
||||
{
|
||||
var ps= ExpressionTool.GetParameters(express.Test);
|
||||
if (ps?.Count == 0)
|
||||
while (express != null)
|
||||
{
|
||||
var value= ExpressionTool.DynamicInvoke(express.Test);
|
||||
if (value is bool boolValue)
|
||||
var ps = ExpressionTool.GetParameters(express.Test);
|
||||
if (ps?.Count == 0)
|
||||
{
|
||||
if (boolValue)
|
||||
var value = ExpressionTool.DynamicInvoke(express.Test);
|
||||
if (value is bool boolValue)
|
||||
{
|
||||
args[2] = express.IfTrue;
|
||||
args[1] = express.IfTrue;
|
||||
// 根据结果选择分支
|
||||
var next = boolValue ? express.IfTrue : express.IfFalse;
|
||||
args[1] = next;
|
||||
args[2] = next;
|
||||
|
||||
// 如果选择的分支还是一个条件表达式,就继续展开
|
||||
if (ExpressionTool.RemoveConvert(next) is ConditionalExpression childConditional)
|
||||
{
|
||||
args[0] = express.Test;
|
||||
express = childConditional;
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
break; // 到底了,不是条件表达式,跳出循环
|
||||
}
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
args[1] = express.IfFalse;
|
||||
args[2] = express.IfFalse;
|
||||
break; // 不是bool,无法判断,退出
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
break; // 有参数,不能动态执行,退出
|
||||
}
|
||||
}
|
||||
}
|
||||
if (IsBoolMember(express))
|
||||
|
Reference in New Issue
Block a user