From b56478023241e4e2a5412c32063d1e9e523a0c3a Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Mon, 21 Apr 2025 19:35:12 +0800 Subject: [PATCH] Update exp tosql --- .../DbMethods/DefaultDbMethod.cs | 93 ++++++++++++++++++- 1 file changed, 92 insertions(+), 1 deletion(-) diff --git a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs index 760e70235..d9a486c8d 100644 --- a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs +++ b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs @@ -945,7 +945,7 @@ namespace SqlSugar { if (IsArrayAnyParameter(model)) { - return ListArrayAny(model); + return ListArrayAll(model); } StringBuilder sb = new StringBuilder(); if (model.Args[0].MemberValue != null && (model.Args[0].MemberValue as IList).Count > 0) @@ -1126,6 +1126,97 @@ namespace SqlSugar } } + private string ListArrayAll(MethodCallExpressionModel model) + { + StringBuilder sb = new StringBuilder(); + if (model.Args[0].MemberValue != null && (model.Args[0].MemberValue as IList).Count > 0) + { + sb.Append(" ( "); + var listPar = model.Args[1].MemberValue as ListAnyParameter; + foreach (var item in (model.Args[0].MemberValue as IList)) + { + var sql = listPar.Sql; + if (sb.Length > 3) + { + sb.Append("AND"); + } + foreach (var columnInfo in listPar.Columns) + { + var value = item; + var newValue = "null"; + if (value != null) + { + if (columnInfo.DbTableName != "String" && UtilMethods.IsNumber(columnInfo.UnderType.Name)) + { + newValue = value.ToString(); + } + else if (columnInfo.UnderType == SqlSugar.UtilConstants.GuidType) + { + newValue = ToGuid(new MethodCallExpressionModel() + { + Args = new List() + { + new MethodCallExpressionArgs(){ + MemberValue=value.ToSqlValue(), + MemberName=value.ToSqlValue() + } + } + }); + } + else if (columnInfo.UnderType == SqlSugar.UtilConstants.DateType) + { + newValue = ToDate(new MethodCallExpressionModel() + { + Args = new List() + { + new MethodCallExpressionArgs(){ + MemberValue=UtilMethods.GetConvertValue( value).ToSqlValue(), + MemberName=UtilMethods.GetConvertValue( value).ToSqlValue() + } + } + }); + } + else + { + newValue = value.ToSqlValue(); + } + } + //Regex regex = new Regex("\@"); + if (!sql.Contains(ParameterKeyWord)) + { + sql = sql.Replace(" =)", $" = {newValue})"); + if (!sql.Contains(newValue)) + { + sql = sql.Replace(" )", $" = {newValue})"); + } + } + else + { + Regex reg = new Regex(ParameterKeyWord + @"MethodConst\d+"); + sql = reg.Replace(sql, it => + { + return " " + newValue + " "; + }); + } + + } + sb.Append(sql); + } + sb.Append(" ) "); + } + var result = sb.ToString(); + result = result.Replace(" = null)", " is null)"); + if (result.IsNullOrEmpty()) + { + return " 1=2 "; + } + else + { + return result; + } + } + + private static List GetStringFormatArgs(string str, object array) { var args = new List()