Update exp to sql

This commit is contained in:
sunkaixuan
2025-09-30 13:37:48 +08:00
parent 37feb60602
commit c3989e3e74
3 changed files with 17 additions and 2 deletions

View File

@@ -359,10 +359,16 @@ namespace SqlSugar
}
public static List<ParameterExpression> GetParameters(Expression expr)
{
var ps = new ParameterExpressionVisitor();
var ps = new ParameterExpressionVisitor();
ps.Visit(expr);
return ps.Parameters;
}
public static bool NoParameterOrSqlfunc(Expression expr)
{
var ps = new ParameterExpressionVisitor();
ps.Visit(expr);
return ps.Parameters.Count==0&&ps.IsSqlFunc==false;
}
public static bool IsComparisonOperatorBool(BinaryExpression binaryExp)
{
return binaryExp.NodeType.IsIn(ExpressionType.Equal,

View File

@@ -10,6 +10,7 @@ namespace SqlSugar
{
internal class ParameterExpressionVisitor : ExpressionVisitor
{
public bool IsSqlFunc { get; set; }
public List<ParameterExpression> Parameters { get; } = new List<ParameterExpression>();
protected override Expression VisitParameter(ParameterExpression node)
@@ -17,6 +18,14 @@ namespace SqlSugar
Parameters.Add(node);
return base.VisitParameter(node);
}
protected override Expression VisitMethodCall(MethodCallExpression node)
{
if (node.Method?.DeclaringType==typeof(SqlFunc))
{
IsSqlFunc = true;
}
return base.VisitMethodCall(node);
}
}
internal class MethodCallExpressionVisitor : ExpressionVisitor
{

View File

@@ -18,7 +18,7 @@ namespace SqlSugar
express.IfFalse
};
SetSingleTableNameSubqueryShortName(express);
if (ExpressionTool.GetParameters(express.Test).Count == 0)
if (ExpressionTool.NoParameterOrSqlfunc(express.Test))
{
while (express != null)
{