diff --git a/Mvc.JQuery.DataTables.Common/DataTablesFiltering.cs b/Mvc.JQuery.DataTables.Common/DataTablesFiltering.cs index 1a9cb4f..0d2ce61 100644 --- a/Mvc.JQuery.DataTables.Common/DataTablesFiltering.cs +++ b/Mvc.JQuery.DataTables.Common/DataTablesFiltering.cs @@ -7,7 +7,7 @@ namespace Mvc.JQuery.DataTables { - internal class DataTablesFiltering + public class DataTablesFiltering { public IQueryable ApplyFiltersAndSort(DataTablesParam dtParameters, IQueryable data, DataTablesPropertyInfo[] columns) { @@ -30,7 +30,11 @@ public IQueryable ApplyFiltersAndSort(DataTablesParam dtParameters, IQuery } } var values = parts.Where(p => p != null); - data = data.Where(string.Join(" or ", values), parameters.ToArray()); + var filterClause = string.Join(" or ", values); + if (string.IsNullOrWhiteSpace(filterClause) == false) + { + data = data.Where(filterClause, parameters.ToArray()); + } } for (int i = 0; i < dtParameters.sSearchValues.Count; i++) { @@ -114,7 +118,7 @@ private static ReturnedFilteredQueryForType Guard(Func(GuardedFilter filter) { - Filters.Add(Guard(arg => arg is T, filter)); + Filters.Add(Guard(arg => arg.Type == typeof(T), filter)); } private static string GetFilterClause(string query, DataTablesPropertyInfo column, List parametersForLinqQuery) diff --git a/Mvc.JQuery.DataTables.Common/Processing/TypeFilters.cs b/Mvc.JQuery.DataTables.Common/Processing/TypeFilters.cs index ea17f90..0ba2111 100644 --- a/Mvc.JQuery.DataTables.Common/Processing/TypeFilters.cs +++ b/Mvc.JQuery.DataTables.Common/Processing/TypeFilters.cs @@ -251,11 +251,17 @@ public static string StringFilter(string q, string columnname, DataTablesPropert public static string EnumFilter(string q, string columnname, DataTablesPropertyInfo propertyInfo, List parametersForLinqQuery) { - - if (q.StartsWith("^")) q = q.Substring(1); - if (q.EndsWith("$")) q = q.Substring(0, q.Length - 1); - parametersForLinqQuery.Add(ParseValue(q, propertyInfo.Type)); - return columnname + " == @" + (parametersForLinqQuery.Count - 1); + try + { + if (q.StartsWith("^")) q = q.Substring(1); + if (q.EndsWith("$")) q = q.Substring(0, q.Length - 1); + parametersForLinqQuery.Add(ParseValue(q, propertyInfo.Type)); + return columnname + " == @" + (parametersForLinqQuery.Count - 1); + } + catch (Exception) + { + return null; + } } } }