public virtual IEnumerable <T> Filter(TFilterDefinition filterDefinition, CurrentPageInformation pagingInfo, SortSpecification sortSpecification, out int count) { var data = PrepareFilter(filterDefinition); count = data.Count(); return(SortAndPage(data, sortSpecification, pagingInfo)); }
protected virtual IQueryable <T> Page(IQueryable <T> data, CurrentPageInformation pagingInfo) { Debug.Assert(data != null); if (pagingInfo == null) { return(data); } return(data.Skip(pagingInfo.PageSize * (pagingInfo.Page - 1)).Take(pagingInfo.PageSize)); }
public virtual IQueryable <T> SortAndPage(IQueryable <T> data, SortSpecification sortSpecification, CurrentPageInformation pagingInfo) { string sort = null; if (sortSpecification != null && !string.IsNullOrWhiteSpace(sort = sortSpecification.ToString())) { return(Page(data.OrderBy(sort), pagingInfo)); } return(Page(data.OrderByDescending(DefaultOrderSelector()), pagingInfo)); }