diff --git a/OrmTest/ExpressionTest/Method.cs b/OrmTest/ExpressionTest/Method.cs index b82ac67dd..a522ca772 100644 --- a/OrmTest/ExpressionTest/Method.cs +++ b/OrmTest/ExpressionTest/Method.cs @@ -29,10 +29,24 @@ namespace OrmTest.ExpressionTest ToUpper(); ToLower(); Trim(); + Contains(); #endregion } base.End("Method Test"); } + + private void Contains() + { + Expression> exp = it => NBORM.Contains(it.Name,"a"); + SqlServerExpressionContext expContext = new SqlServerExpressionContext(exp, ResolveExpressType.WhereSingle); + expContext.Resolve(); + var value = expContext.Result.GetString(); + var pars = expContext.Parameters; + base.Check(value, pars, "((rtrim(ltrim(@MethodConst0))) = Name )", new List() { + new SugarParameter("@MethodConst0"," a") + }, "Contains"); + } + private void Trim() { Expression> exp = it =>NBORM.Trim(" a")==it.Name; diff --git a/SqlSugar/ExpressionsToSql/Method/DefaultDbMethod.cs b/SqlSugar/ExpressionsToSql/Method/DefaultDbMethod.cs index 10ca5930b..55cfdcf2c 100644 --- a/SqlSugar/ExpressionsToSql/Method/DefaultDbMethod.cs +++ b/SqlSugar/ExpressionsToSql/Method/DefaultDbMethod.cs @@ -30,5 +30,12 @@ namespace SqlSugar var parameter = model.Args[0]; return string.Format(" (rtrim(ltrim({0}))) ", parameter.Value); } + + public virtual object Contains(MethodCallExpressionModel model) + { + var parameter = model.Args[0]; + var parameter2 = model.Args[0]; + return string.Format(" {0} like '%'+{1}+'%' ", parameter.Value, parameter2.Value); + } } } diff --git a/SqlSugar/ExpressionsToSql/Method/IDbMethods.cs b/SqlSugar/ExpressionsToSql/Method/IDbMethods.cs index 6cc4c5436..1e4154a07 100644 --- a/SqlSugar/ExpressionsToSql/Method/IDbMethods.cs +++ b/SqlSugar/ExpressionsToSql/Method/IDbMethods.cs @@ -15,5 +15,6 @@ namespace SqlSugar object ToLower(MethodCallExpressionModel model); object ToUpper(MethodCallExpressionModel model); object Trim(MethodCallExpressionModel model); + object Contains(MethodCallExpressionModel model); } } diff --git a/SqlSugar/ExpressionsToSql/Method/NBORM.cs b/SqlSugar/ExpressionsToSql/Method/NBORM.cs index a561c828b..66f4db4b1 100644 --- a/SqlSugar/ExpressionsToSql/Method/NBORM.cs +++ b/SqlSugar/ExpressionsToSql/Method/NBORM.cs @@ -12,5 +12,6 @@ namespace SqlSugar public static string ToLower(object thisValue) { throw new NotImplementedException(); } public static string ToUpper(object thisValue) { throw new NotImplementedException(); } public static string Trim(object thisValue) { throw new NotImplementedException(); } + public static bool Contains(string thisValue, string parameterValue) { throw new NotImplementedException();} } } diff --git a/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs b/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs index af9af6958..d1fc68c9b 100644 --- a/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs +++ b/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs @@ -76,6 +76,8 @@ namespace SqlSugar return this.Context.DbMehtods.ToUpper(model); case "Trim": return this.Context.DbMehtods.Trim(model); + case "Contains": + return this.Context.DbMehtods.Contains(model); default: break; }