public static IQueryable <T> Search <T>(this IQueryable <T> query, SearchCriteria searchCriteria)
        {
            var predicate = PredicateBuilder.False <T>();

            if (searchCriteria.PropertiesToSearch.Count() > 0 && !string.IsNullOrEmpty(searchCriteria.Term))
            {
                foreach (var property in searchCriteria.PropertiesToSearch)
                {
                    predicate = predicate.Or(SearchExpressionHelper.BuildPredicate <T>(property, SearchOperation.Contains, searchCriteria.Term));
                }

                return(query.Where(predicate));
            }

            return(query);
        }
 public static IQueryable <T> Where <T>(this IQueryable <T> query, string propertyName, SearchOperation searchOperation, string value)
 {
     return(query.Where(SearchExpressionHelper.BuildPredicate <T>(propertyName, searchOperation, value)));
 }