mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-23 04:23:47 +08:00
Update exp to sql
This commit is contained in:
@@ -17,6 +17,7 @@ namespace SqlSugar
|
|||||||
express.IfTrue,
|
express.IfTrue,
|
||||||
express.IfFalse
|
express.IfFalse
|
||||||
};
|
};
|
||||||
|
SetSingleTableNameSubqueryShortName(express);
|
||||||
if (ExpressionTool.GetParameters(express.Test).Count == 0)
|
if (ExpressionTool.GetParameters(express.Test).Count == 0)
|
||||||
{
|
{
|
||||||
while (express != null)
|
while (express != null)
|
||||||
@@ -36,7 +37,7 @@ namespace SqlSugar
|
|||||||
// 如果选择的分支还是一个条件表达式,就继续展开
|
// 如果选择的分支还是一个条件表达式,就继续展开
|
||||||
if (ExpressionTool.RemoveConvert(next) is ConditionalExpression childConditional)
|
if (ExpressionTool.RemoveConvert(next) is ConditionalExpression childConditional)
|
||||||
{
|
{
|
||||||
express = childConditional;
|
express = childConditional;
|
||||||
args = new List<Expression>() {
|
args = new List<Expression>() {
|
||||||
express.Test,
|
express.Test,
|
||||||
express.IfTrue,
|
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)
|
private static bool IsBoolMember(ConditionalExpression express)
|
||||||
{
|
{
|
||||||
return express.Test is MemberExpression && (express.Test as MemberExpression).Expression is ParameterExpression;
|
return express.Test is MemberExpression && (express.Test as MemberExpression).Expression is ParameterExpression;
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
<package >
|
<package >
|
||||||
<metadata>
|
<metadata>
|
||||||
<id>SqlSugarCore</id>
|
<id>SqlSugarCore</id>
|
||||||
<version>5.1.4.196-preview07</version>
|
<version>5.1.4.196-preview09</version>
|
||||||
<authors>sunkaixuan</authors>
|
<authors>sunkaixuan</authors>
|
||||||
<owners>果糖大数据科技</owners>
|
<owners>果糖大数据科技</owners>
|
||||||
<licenseUrl>http://www.apache.org/licenses/LICENSE-2.0.html</licenseUrl>
|
<licenseUrl>http://www.apache.org/licenses/LICENSE-2.0.html</licenseUrl>
|
||||||
|
Reference in New Issue
Block a user