/// <summary>
/// 分页列表类
/// </summary>
public class PagedList<T>
{
/// <summary>
/// 每页页面大小
/// </summary>
public int PageSize { get; private set; }
/// <summary>
/// 页面总数
/// </summary>
public int TotalCount { get; private set; }
/// <summary>
/// 首页页面Index
/// </summary>
public IEnumerable<T> Items { get; private set; }
/// <summary>
/// .ctor
/// </summary>
/// <param name="items">总列表</param>
/// <param name="pageSize">每页大小</param>
public PagedList(IEnumerable<T> items, int pageSize)
{
PageSize = pageSize;
TotalCount = items.Count();
Items = items;
}
/// <summary>
/// 总页面数
/// </summary>
public int PageCount
{
get { return TotalCount % PageSize == 0 ? TotalCount / PageSize : TotalCount / PageSize + 1; }
}
/// <summary>
/// 根据页面索引计算当前页在列表中的区间上限
/// </summary>
/// <param name="pageIndex"></param>
/// <returns></returns>
public int GetStartIndex(int pageIndex)
{
return (pageIndex - 1) * PageSize + 1;
}
/// <summary>
/// 根据页面索引计算当前页在列表中的区间下限
/// </summary>
/// <param name="pageIndex"></param>
/// <returns></returns>
public int GetEndIndex(int pageIndex)
{
return (pageIndex * PageSize);
}
/// <summary>
/// 根据页面索引获得列表中对应的数据
/// </summary>
/// <param name="pageIdx"></param>
/// <returns></returns>
public IEnumerable<T> SubItems(int pageIdx)
{
return this.Items.Skip(GetStartIndex(pageIdx)-1).Take(PageSize);
}
}