From b382d5ca4b30a3870bb276ca9214dde893512a52 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Tue, 11 Jul 2023 12:43:33 +0800 Subject: [PATCH] Update exp to sql (string.format) --- .../ExpressionsToSql/DbMethods/DefaultDbMethod.cs | 13 ++++++++++++- .../MethodCallExpressionResolve_Helper.cs | 8 ++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs index 3d8147f16..79d403181 100644 --- a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs +++ b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs @@ -562,7 +562,14 @@ namespace SqlSugar { var str = model.Args[0].MemberValue.ObjToString(); var array = model.Args.Skip(1).Select(it => it.IsMember ? it.MemberName : it.MemberValue).ToArray(); - return string.Format("'" + str + "'", array); + if (array.Length == 1 && array[0] is string[]) + { + return string.Format("'" + str + "'", array[0] as string[]); + } + else + { + return string.Format("'" + str + "'", array); + } } public virtual string Format(MethodCallExpressionModel model) { @@ -573,6 +580,10 @@ namespace SqlSugar { return FormatConcat(model); } + if (model.Args.Count == 2 && model.Args[1].MemberValue is string[]) + { + return string.Format("" + str + "", model.Args[1].MemberValue as string[]); + } str =Regex.Replace(str, @"(\{\d+?\})", revalue); var array = model.Args.Skip(1).Select(it => it.IsMember?it.MemberName:(it.MemberValue==null?"''":it.MemberValue.ToSqlValue())) .Select(it=>ToString(new MethodCallExpressionModel() { Args=new List() { diff --git a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve_Helper.cs b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve_Helper.cs index 24f486986..2e35e1d65 100644 --- a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve_Helper.cs +++ b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve_Helper.cs @@ -366,6 +366,14 @@ namespace SqlSugar { parameter.CommonTempData = GetNewExpressionValue(item); } + else if (name == "Format" && item is NewArrayExpression) + { + var exps = (item as NewArrayExpression).Expressions; + parameter.CommonTempData = exps.Select(it => { + var res = GetNewExpressionValue(ExpressionTool.RemoveConvert(it)); + return res; + }).ToArray(); + } else { base.Start();