C#分页类

using System.Linq;
using System.Collections.Generic;

namespace CommonLibrary
{
    public class PagedList<T> : List<T>
    {
        #region Properties

        public int PageIndex { get; private set; }

        public int PageSize { get; private set; }

        public int TotalCount { get; private set; }

        public int TotalPages { get; private set; }

        public bool HasPreviousPage
        {
            get { return (PageIndex > 0); }
        }
        public bool HasNextPage
        {
            get { return (PageIndex + 1 < TotalPages); }
        }

        #endregion

        #region Constructors

        public PagedList(IQueryable<T> source, int pageIndex, int pageSize)
        {
            if (source == null || source.Count() < 1)
                throw new System.ArgumentNullException("source");

            int total = source.Count();
            this.TotalCount = total;
            this.TotalPages = total / pageSize;

            if (total % pageSize > 0)
                TotalPages++;

            this.PageSize = pageSize;
            this.PageIndex = pageIndex;
            this.AddRange(source.Skip(pageIndex * pageSize).Take(pageSize).ToList());
        }

        public PagedList(IList<T> source, int pageIndex, int pageSize)
        {
            if (source == null || source.Count() < 1)
                throw new System.ArgumentNullException("source");

            TotalCount = source.Count();
            TotalPages = TotalCount / pageSize;

            if (TotalCount % pageSize > 0)
                TotalPages++;

            this.PageSize = pageSize;
            this.PageIndex = pageIndex;
            this.AddRange(source.Skip(pageIndex * pageSize).Take(pageSize).ToList());
        }

        public PagedList(IEnumerable<T> source, int pageIndex, int pageSize, int totalCount)
        {
            if (source == null || source.Count() < 1)
                throw new System.ArgumentNullException("source");

            TotalCount = totalCount;
            TotalPages = TotalCount / pageSize;

            if (TotalCount % pageSize > 0)
                TotalPages++;

            this.PageSize = pageSize;
            this.PageIndex = pageIndex;
            this.AddRange(source);
        }

        #endregion
    }
}

 

posted @ 2013-07-02 15:00  吻上明天  阅读(2019)  评论(0编辑  收藏  举报