public static IQueryable <T> Search <T>(this IQueryable <T> items, string searchText) { if (items == null) { throw new ArgumentNullException(nameof(items)); } if (string.IsNullOrWhiteSpace(searchText)) { return(items); } // parse searchText var searchExpression = SearchExpression.Create(SearchConfiguration.CurrentConfig, searchText) .Decompose(); return(items.Where(searchExpression.ToWhereClause <T>(Expression.Parameter(typeof(T))))); }