using System; using System.Collections.Generic; using System.Linq; namespace Masuit.Tools.Models { /// /// 分页集合 /// /// public class PagedList { /// /// 数据集 /// public List Data { get; } /// /// 当前页 /// public int CurrentPage { get; } /// /// 总页数 /// public int TotalPages { get; } /// /// 页大小 /// public int PageSize { get; } /// /// 总条数 /// public int TotalCount { get; } /// /// 当前页数据条数 /// public int CurrentCount => Data.Count; /// /// 是否有前一页 /// public bool HasPrev => CurrentPage > 1; /// /// 是否有后一页 /// public bool HasNext => CurrentPage < TotalPages; /// /// 分页数据 /// /// 数据集 /// 当前页 /// 页大小 /// 总条数 public PagedList(List items, int page, int size, int count) { TotalCount = count; PageSize = size; CurrentPage = page; TotalPages = (int)Math.Ceiling(count * 1.0 / size); Data = items; } } public static partial class IQueryableExt { /// /// 生成分页集合 /// /// /// /// 当前页 /// 页大小 /// public static PagedList ToPagedList(this IOrderedQueryable query, int page, int size) { var totalCount = query.Count(); if (page * size > totalCount) { page = (int)Math.Ceiling(totalCount / (size * 1.0)); } if (page <= 0) { page = 1; } var list = query.Skip(size * (page - 1)).Take(size).ToList(); return new PagedList(list, page, size, totalCount); } /// /// 生成分页集合 /// /// /// /// 当前页 /// 页大小 /// public static PagedList ToPagedList(this IEnumerable query, int page, int size) { var totalCount = query.Count(); if (page * size > totalCount) { page = (int)Math.Ceiling(totalCount / (size * 1.0)); } if (page <= 0) { page = 1; } var list = query.Skip(size * (page - 1)).Take(size).ToList(); return new PagedList(list, page, size, totalCount); } } }