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)); } }
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)); } }
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)); } }
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)); } }
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)); } }
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)); }
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)); } }