public Expression Transform(MethodCallExpression methodCallExpression) { ArgumentUtility.CheckNotNull("methodCallExpression", methodCallExpression); MethodCallTransformerUtility.CheckArgumentCount(methodCallExpression, 1); MethodCallTransformerUtility.CheckInstanceMethod(methodCallExpression); return(SqlLikeExpression.Create(methodCallExpression.Object, methodCallExpression.Arguments[0], "%", "%")); }
public void Create_ArgumentIsNotNull() { var objectExpression = Expression.Constant("Test"); var argument1 = Expression.Constant("test"); var result = SqlLikeExpression.Create(objectExpression, argument1, "%", "%"); var rightExpression = Expression.Constant(string.Format("%{0}%", argument1.Value)); var expectedResult = new SqlLikeExpression(objectExpression, rightExpression, new SqlLiteralExpression(@"\")); SqlExpressionTreeComparer.CheckAreEqualTrees(expectedResult, result); }
public void Create_ArgumentIsNotNullAndNoConstantExpression() { var method = typeof(string).GetMethod("Contains", new[] { typeof(string) }); var objectExpression = Expression.Constant("Test"); var argument1 = Expression.MakeMemberAccess(Expression.Constant(new Cook()), typeof(Cook).GetProperty("Name")); var expression = Expression.Call(objectExpression, method, argument1); var result = SqlLikeExpression.Create(expression.Object, expression.Arguments[0], "%", "%"); Expression rightExpression = new SqlFunctionExpression( typeof(string), "REPLACE", new SqlFunctionExpression( typeof(string), "REPLACE", new SqlFunctionExpression( typeof(string), "REPLACE", new SqlFunctionExpression( typeof(string), "REPLACE", argument1, new SqlLiteralExpression(@"\"), new SqlLiteralExpression(@"\\")), new SqlLiteralExpression(@"%"), new SqlLiteralExpression(@"\%")), new SqlLiteralExpression(@"_"), new SqlLiteralExpression(@"\_")), new SqlLiteralExpression(@"["), new SqlLiteralExpression(@"\[")); rightExpression = Expression.Add( new SqlLiteralExpression("%"), rightExpression, typeof(string).GetMethod("Concat", new[] { typeof(string), typeof(string) })); rightExpression = Expression.Add( rightExpression, new SqlLiteralExpression("%"), typeof(string).GetMethod("Concat", new[] { typeof(string), typeof(string) })); var expectedResult = new SqlLikeExpression(objectExpression, rightExpression, new SqlLiteralExpression(@"\")); SqlExpressionTreeComparer.CheckAreEqualTrees(expectedResult, result); }