| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace Masuit.Tools.Models
- {
- /// <summary>
- /// 分页集合
- /// </summary>
- /// <typeparam name="T"></typeparam>
- public class PagedList<T>
- {
- /// <summary>
- /// 数据集
- /// </summary>
- public List<T> Data { get; }
- /// <summary>
- /// 当前页
- /// </summary>
- public int CurrentPage { get; set; }
- /// <summary>
- /// 总页数
- /// </summary>
- public int TotalPages { get; }
- /// <summary>
- /// 页大小
- /// </summary>
- public int PageSize { get; }
- /// <summary>
- /// 总条数
- /// </summary>
- public int TotalCount { get; }
- /// <summary>
- /// 当前页数据条数
- /// </summary>
- public int CurrentCount => Data.Count;
- /// <summary>
- /// 是否有前一页
- /// </summary>
- public bool HasPrev => CurrentPage > 1;
- /// <summary>
- /// 是否有后一页
- /// </summary>
- public bool HasNext => CurrentPage < TotalPages;
- /// <summary>
- /// 分页数据
- /// </summary>
- /// <param name="items">数据集</param>
- /// <param name="page">当前页</param>
- /// <param name="size">页大小</param>
- /// <param name="count">总条数</param>
- public PagedList(List<T> 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
- {
- /// <summary>
- /// 生成分页集合
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="query"></param>
- /// <param name="page">当前页</param>
- /// <param name="size">页大小</param>
- /// <returns></returns>
- public static PagedList<T> ToPagedList<T>(this IQueryable<T> 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<T>(list, page, size, totalCount);
- }
- /// <summary>
- /// 生成分页集合
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="query"></param>
- /// <param name="page">当前页</param>
- /// <param name="size">页大小</param>
- /// <returns></returns>
- public static PagedList<T> ToPagedList<T>(this IEnumerable<T> 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<T>(list, page, size, totalCount);
- }
- }
- }
|