private static object GetDecimal <T>(ParameterExpression parameter, QueryParser.ValueContext valueContext, NamingStrategy namingStrategy = null) { if (decimal.TryParse(valueContext.GetText().Replace(".", Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator), out var result)) { return(result); } if (ExpressionValue.TryParse <T>(parameter, valueContext.GetText(), namingStrategy, out var value)) { return(value); } throw new QueryValueInvalidConversionException(valueContext, typeof(decimal)); }
private static object GetBoolean <T>(ParameterExpression parameter, QueryParser.ValueContext valueContext, NamingStrategy namingStrategy = null) { if (bool.TryParse(valueContext.GetText(), out var result)) { return(result); } if (ExpressionValue.TryParse <T>(parameter, valueContext.GetText(), namingStrategy, out var value)) { return(value); } throw new QueryValueInvalidConversionException(valueContext, typeof(bool)); }
private static object GetDateTimeOffset <T>(ParameterExpression parameter, QueryParser.ValueContext valueContext, NamingStrategy namingStrategy = null) { try { return(DateTimeOffset.Parse(valueContext.GetText(), CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind)); } catch { if (ExpressionValue.TryParse <T>(parameter, valueContext.GetText(), namingStrategy, out var value)) { return(value); } throw new QueryValueInvalidConversionException(valueContext, typeof(DateTimeOffset)); } }
private static object GetString <T>(ParameterExpression parameter, QueryParser.ValueContext valueContext, NamingStrategy namingStrategy = null) { if (valueContext.single_quote() != null || valueContext.double_quote() != null) { var replace = valueContext.single_quote() != null ? "'" : "\""; var value = valueContext.GetText(); return(value.Length == 2 ? string.Empty : value.Substring(1, value.Length - 2).Replace("\\" + replace, replace)); } if (ExpressionValue.TryParse <T>(parameter, valueContext.GetText(), namingStrategy, out var expression)) { return(expression); } return(valueContext.GetText()); }