コード例 #1
0
        public Expression SubStringOfMethod(SubStringOfMethod method, LiteralExpression[] arguments)
        {
            if (arguments.Length == 1)
            {
                return(arguments[0]);
            }
            else
            {
                bool result;

                if (LiteralUtil.IsAnyNull(arguments))
                {
                    result = false;
                }
                else
                {
                    result = LiteralUtil.CoerceString(arguments[1]).IndexOf(
                        LiteralUtil.CoerceString(arguments[0]),
                        StringComparison.InvariantCultureIgnoreCase
                        ) != -1;
                }

                return(new LiteralExpression(result, LiteralType.Boolean));
            }
        }
コード例 #2
0
        public Expression IndexOfMethod(IndexOfMethod method, LiteralExpression[] arguments)
        {
            int result;

            if (LiteralUtil.IsAnyNull(arguments))
            {
                result = -1;
            }
            else
            {
                result = LiteralUtil.CoerceString(arguments[0]).IndexOf(
                    LiteralUtil.CoerceString(arguments[1]),
                    StringComparison.InvariantCultureIgnoreCase
                    );
            }

            if (result == -1)
            {
                return(new LiteralExpression(null, LiteralType.Null));
            }
            else
            {
                return(new LiteralExpression(result + 1, LiteralType.Int));
            }
        }
コード例 #3
0
        public Expression LengthMethod(LengthMethod method, LiteralExpression[] arguments)
        {
            if (LiteralUtil.IsAnyNull(arguments))
            {
                return(new LiteralExpression(null, LiteralType.Null));
            }
            else
            {
                int result = LiteralUtil.CoerceString(arguments[0]).Length;

                return(new LiteralExpression(result, LiteralType.Int));
            }
        }
コード例 #4
0
        public Expression TrimMethod(TrimMethod method, LiteralExpression[] arguments)
        {
            if (LiteralUtil.IsAnyNull(arguments))
            {
                return(new LiteralExpression(null, LiteralType.Null));
            }
            else
            {
                string result = LiteralUtil.CoerceString(arguments[0]).Trim();

                return(new LiteralExpression(result, LiteralType.String));
            }
        }
コード例 #5
0
        public Expression ReplaceMethod(ReplaceMethod method, LiteralExpression[] arguments)
        {
            if (LiteralUtil.IsAnyNull(arguments))
            {
                return(new LiteralExpression(null, LiteralType.Null));
            }
            else
            {
                string result = LiteralUtil.CoerceString(arguments[0]).Replace(
                    LiteralUtil.CoerceString(arguments[1]),
                    LiteralUtil.CoerceString(arguments[2])
                    );

                return(new LiteralExpression(result, LiteralType.String));
            }
        }
コード例 #6
0
        public Expression EndsWithMethod(EndsWithMethod method, LiteralExpression[] arguments)
        {
            bool result;

            if (LiteralUtil.IsAnyNull(arguments))
            {
                result = false;
            }
            else
            {
                result = LiteralUtil.CoerceString(arguments[0]).EndsWith(
                    LiteralUtil.CoerceString(arguments[1]),
                    StringComparison.InvariantCultureIgnoreCase
                    );
            }

            return(new LiteralExpression(result, LiteralType.Boolean));
        }
コード例 #7
0
        private Expression NormalizeDatePart(DatePartMethod method, LiteralExpression[] arguments)
        {
            if (LiteralUtil.IsAnyNull(arguments))
            {
                return(new LiteralExpression(null, LiteralType.Null));
            }
            else if (arguments[0].LiteralType != LiteralType.DateTime)
            {
                throw new ODataException(String.Format(
                                             ErrorMessages.Method_InvalidArgumentType,
                                             method.MethodType, 1, "Edm.DateTime"
                                             ));
            }
            else
            {
                var argument = (DateTime)arguments[0].Value;
                int result;

                switch (method.MethodType)
                {
                case MethodType.Year: result = argument.Year; break;

                case MethodType.Month: result = argument.Month; break;

                case MethodType.Day: result = argument.Day; break;

                case MethodType.Hour: result = argument.Hour; break;

                case MethodType.Minute: result = argument.Minute; break;

                case MethodType.Second: result = argument.Second; break;

                default: throw new NotSupportedException();
                }

                return(new LiteralExpression(result, LiteralType.Int));
            }
        }