public static IQueryable <T> Filter <T>(this IQueryable <T> query, StoreParams storeParams) { if (storeParams == null /*|| (storeParams.FilterParams == null || !storeParams.FilterParams.Any() )*/) { return(query); } var properties = typeof(T).GetProperties(); storeParams .DetermineFilterOperators(properties) .Where(x => properties.Any(y => y.Name.ToLower() == x.PropertyName.ToLower())) .ForEach(x => { var field = properties.First(y => y.Name.ToLower() == x.PropertyName.ToLower()); var filterExpression = FilterExpressionBuilder.GetFilterExpression <T>(field, x.Value, x.Operator, x.SubProperties); if (filterExpression != null) { query = query.Where(filterExpression); } }); return(query); }