Remotion.Linq.SqlBackend.SqlPreparation.MethodCallTransformers.IsNullOrEmptyMethodCallTransformer.Transform C# (CSharp) Method

Transform() public method

public Transform ( MethodCallExpression methodCallExpression ) : Expression
methodCallExpression System.Linq.Expressions.MethodCallExpression
return System.Linq.Expressions.Expression
    public Expression Transform (MethodCallExpression methodCallExpression)
    {
      ArgumentUtility.CheckNotNull ("methodCallExpression", methodCallExpression);

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

      var isNullExpression = new SqlIsNullExpression (methodCallExpression.Arguments[0]);
      var lenExpression = new SqlLengthExpression (methodCallExpression.Arguments[0]);
      var lenIsZeroExpression = Expression.Equal (lenExpression, new SqlLiteralExpression (0));

      return Expression.OrElse (isNullExpression, lenIsZeroExpression);
    }
  }

Usage Example

    public void Transform ()
    {
      var method = typeof (string).GetMethod ("IsNullOrEmpty", new[] { typeof(string) });
      var objectExpression = Expression.Constant ("Test");
      var expression = Expression.Call (method, objectExpression);
      var transformer = new IsNullOrEmptyMethodCallTransformer ();

      var result = transformer.Transform (expression);

      var expectedIsNullExpression = new SqlIsNullExpression (objectExpression);
      var expectedLenExpression = new SqlLengthExpression (objectExpression);
      var expectedResult = Expression.OrElse (expectedIsNullExpression, Expression.Equal (expectedLenExpression, new SqlLiteralExpression(0)));
      
      SqlExpressionTreeComparer.CheckAreEqualTrees (expectedResult, result);
    }
IsNullOrEmptyMethodCallTransformer