mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-06-28 13:34:32 +08:00
Update exp to sql
This commit is contained in:
parent
98ed5e8a75
commit
d522b8d805
@ -17,6 +17,7 @@ namespace SqlSugar
|
||||
express.IfTrue,
|
||||
express.IfFalse
|
||||
};
|
||||
SetSingleTableNameSubqueryShortName(express);
|
||||
if (ExpressionTool.GetParameters(express.Test).Count == 0)
|
||||
{
|
||||
while (express != null)
|
||||
@ -36,7 +37,7 @@ namespace SqlSugar
|
||||
// 如果选择的分支还是一个条件表达式,就继续展开
|
||||
if (ExpressionTool.RemoveConvert(next) is ConditionalExpression childConditional)
|
||||
{
|
||||
express = childConditional;
|
||||
express = childConditional;
|
||||
args = new List<Expression>() {
|
||||
express.Test,
|
||||
express.IfTrue,
|
||||
@ -89,6 +90,42 @@ namespace SqlSugar
|
||||
}
|
||||
}
|
||||
|
||||
private void SetSingleTableNameSubqueryShortName(ConditionalExpression express)
|
||||
{
|
||||
if (this.Context.IsSingle && express.Test is MethodCallExpression callExpression)
|
||||
{
|
||||
var list = callExpression.Arguments.ToList();
|
||||
if (express.IfTrue is MethodCallExpression callExpressionLeft)
|
||||
{
|
||||
list.AddRange(callExpressionLeft.Arguments);
|
||||
}
|
||||
if (express.IfFalse is MethodCallExpression callExpressionRight)
|
||||
{
|
||||
list.AddRange(callExpressionRight.Arguments);
|
||||
}
|
||||
foreach (var item in list)
|
||||
{
|
||||
if (item is MethodCallExpression itemObj)
|
||||
{
|
||||
if (itemObj?.Object?.Type?.Name?.StartsWith("Subqueryable`") == true)
|
||||
{
|
||||
if (this.Context.SingleTableNameSubqueryShortName == null)
|
||||
{
|
||||
if (this.Context.SugarContext?.QueryBuilder?.SelectValue is LambdaExpression lambda)
|
||||
{
|
||||
if (lambda?.Parameters?.Count == 1)
|
||||
{
|
||||
this.Context.SingleTableNameSubqueryShortName = lambda.Parameters.FirstOrDefault()?.Name;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static bool IsBoolMember(ConditionalExpression express)
|
||||
{
|
||||
return express.Test is MemberExpression && (express.Test as MemberExpression).Expression is ParameterExpression;
|
||||
|
@ -2,7 +2,7 @@
|
||||
<package >
|
||||
<metadata>
|
||||
<id>SqlSugarCore</id>
|
||||
<version>5.1.4.196-preview07</version>
|
||||
<version>5.1.4.196-preview09</version>
|
||||
<authors>sunkaixuan</authors>
|
||||
<owners>果糖大数据科技</owners>
|
||||
<licenseUrl>http://www.apache.org/licenses/LICENSE-2.0.html</licenseUrl>
|
||||
|
Loading…
Reference in New Issue
Block a user