From 56e3d5b83f967667c76cb6240e177a7091d35143 Mon Sep 17 00:00:00 2001 From: jonathanantoine Date: Tue, 24 Dec 2019 17:31:57 +0100 Subject: [PATCH] Let you choose the CultureNameOfTypeConversion --- Sieve/Models/SieveOptions.cs | 4 +++- Sieve/Services/SieveProcessor.cs | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Sieve/Models/SieveOptions.cs b/Sieve/Models/SieveOptions.cs index f0059ee..a207958 100644 --- a/Sieve/Models/SieveOptions.cs +++ b/Sieve/Models/SieveOptions.cs @@ -9,5 +9,7 @@ public class SieveOptions public int MaxPageSize { get; set; } = 0; public bool ThrowExceptions { get; set; } = false; + + public string CultureNameOfTypeConversion { get; set; } = "en"; } -} \ No newline at end of file +} diff --git a/Sieve/Services/SieveProcessor.cs b/Sieve/Services/SieveProcessor.cs index 5913960..e7109d6 100644 --- a/Sieve/Services/SieveProcessor.cs +++ b/Sieve/Services/SieveProcessor.cs @@ -1,5 +1,6 @@ using System; using System.ComponentModel; +using System.Globalization; using System.Linq; using System.Linq.Expressions; using System.Reflection; @@ -169,6 +170,8 @@ private IQueryable ApplyFiltering( return result; } + var cultureInfoToUseForTypeConversion = new CultureInfo(_options.Value.CultureNameOfTypeConversion ?? "en"); + Expression outerExpression = null; var parameterExpression = Expression.Parameter(typeof(TEntity), "e"); foreach (var filterTerm in model.GetFiltersParsed()) @@ -193,7 +196,7 @@ private IQueryable ApplyFiltering( { dynamic constantVal = converter.CanConvertFrom(typeof(string)) - ? converter.ConvertFrom(filterTermValue) + ? converter.ConvertFrom(null, cultureInfoToUseForTypeConversion, filterTermValue) : Convert.ChangeType(filterTermValue, property.PropertyType); Expression filterValue = GetClosureOverConstant(constantVal, property.PropertyType);