Пример #1
0
        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));
        }
Пример #2
0
        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));
        }
Пример #3
0
        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));
        }