/// <inheritdoc />
        public Expression GenerateComparisonExpression(Expression left, LinqExpressionMethodOperator expressionMethodOperator, Expression right)
        {
            switch (expressionMethodOperator)
            {
            case LinqExpressionMethodOperator.StringContains:
                MethodInfo stringContainsMethod = typeof(string).GetMethod("Contains", new[] { typeof(string) });
                return(Expression.Call(left, stringContainsMethod !, right));

            case LinqExpressionMethodOperator.IntContains:
                MethodInfo intContainsMethod = typeof(string).GetMethod("Contains", new[] { typeof(int) });
                return(Expression.Call(left, intContainsMethod !, right));
            }

            return(null);
        }
        /// <inheritdoc />
        public Expression GenerateComparisonExpression(ParameterExpression parameter, string property, LinqExpressionMethodOperator expressionMethodOperator, object value, Type valueType)
        {
            Expression         propertyExpression = GenerateMemberExpression(parameter, property); // Property
            ConstantExpression valueExpression    = Expression.Constant(value, valueType);         // Value

            return(GenerateComparisonExpression(propertyExpression, expressionMethodOperator, valueExpression));
        }