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,7 +17,9 @@ namespace SqlSugar
|
|||||||
express.IfTrue,
|
express.IfTrue,
|
||||||
express.IfFalse
|
express.IfFalse
|
||||||
};
|
};
|
||||||
if (express.Test is MemberExpression memberExpression)
|
if (ExpressionTool.GetParameters(express.Test).Count == 0)
|
||||||
|
{
|
||||||
|
while (express != null)
|
||||||
{
|
{
|
||||||
var ps = ExpressionTool.GetParameters(express.Test);
|
var ps = ExpressionTool.GetParameters(express.Test);
|
||||||
if (ps?.Count == 0)
|
if (ps?.Count == 0)
|
||||||
@@ -25,17 +27,32 @@ namespace SqlSugar
|
|||||||
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))
|
||||||
|
Reference in New Issue
Block a user