Update exp to sql

This commit is contained in:
sunkaixuan
2025-04-28 20:28:15 +08:00
parent 66c7752690
commit bf6d105b3c

View File

@@ -17,25 +17,42 @@ namespace SqlSugar
express.IfTrue, express.IfTrue,
express.IfFalse express.IfFalse
}; };
if (express.Test is MemberExpression memberExpression) if (ExpressionTool.GetParameters(express.Test).Count == 0)
{ {
var ps= ExpressionTool.GetParameters(express.Test); while (express != null)
{
var ps = ExpressionTool.GetParameters(express.Test);
if (ps?.Count == 0) if (ps?.Count == 0)
{ {
var value= ExpressionTool.DynamicInvoke(express.Test); var value = ExpressionTool.DynamicInvoke(express.Test);
if (value is bool boolValue) if (value is bool boolValue)
{ {
if (boolValue) // 根据结果选择分支
var next = boolValue ? express.IfTrue : express.IfFalse;
args[1] = next;
args[2] = next;
// 如果选择的分支还是一个条件表达式,就继续展开
if (ExpressionTool.RemoveConvert(next) is ConditionalExpression childConditional)
{ {
args[2] = express.IfTrue; args[0] = express.Test;
args[1] = express.IfTrue; express = childConditional;
continue;
} }
else else
{ {
args[1] = express.IfFalse; break; // 到底了,不是条件表达式,跳出循环
args[2] = express.IfFalse;
} }
} }
else
{
break; // 不是bool无法判断退出
}
}
else
{
break; // 有参数,不能动态执行,退出
}
} }
} }
if (IsBoolMember(express)) if (IsBoolMember(express))