コード例 #1
0
        public Expression Transform(MethodCallExpression methodCallExpression)
        {
            ArgumentUtility.CheckNotNull("methodCallExpression", methodCallExpression);

            MethodCallTransformerUtility.CheckArgumentCount(methodCallExpression, 1);
            MethodCallTransformerUtility.CheckInstanceMethod(methodCallExpression);

            return(SqlLikeExpression.Create(methodCallExpression.Object, methodCallExpression.Arguments[0], "%", "%"));
        }
コード例 #2
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);
        }
コード例 #3
0
        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);
        }