懒得勤快 5 年之前
父节点
当前提交
a9b067685f
共有 3 个文件被更改,包括 94 次插入0 次删除
  1. 1 0
      Masuit.Tools.Core/Masuit.Tools.Core.csproj
  2. 1 0
      Masuit.Tools/Masuit.Tools.csproj
  3. 92 0
      Masuit.Tools/Models/PagedList.cs

+ 1 - 0
Masuit.Tools.Core/Masuit.Tools.Core.csproj

@@ -92,6 +92,7 @@ github:https://github.com/ldqk/Masuit.Tools</Description>
     <Compile Include="..\Masuit.Tools\Models\BaiduIP.cs" Link="Models\BaiduIP.cs" />
     <Compile Include="..\Masuit.Tools\Models\Email.cs" Link="Models\Email.cs" />
     <Compile Include="..\Masuit.Tools\Models\IspInfo.cs" Link="Models\IspInfo.cs" />
+    <Compile Include="..\Masuit.Tools\Models\PagedList.cs" Link="Models\PagedList.cs" />
     <Compile Include="..\Masuit.Tools\Models\PhysicsAddress.cs" Link="Models\PhysicsAddress.cs" />
     <Compile Include="..\Masuit.Tools\Models\TaobaoIP.cs" Link="Models\TaobaoIP.cs" />
     <Compile Include="..\Masuit.Tools\Net\FtpClient.cs" Link="Net\FtpClient.cs" />

+ 1 - 0
Masuit.Tools/Masuit.Tools.csproj

@@ -159,6 +159,7 @@
     <Compile Include="Media\ThumbnailCutMode.cs" />
     <Compile Include="Models\BaiduIP.cs" />
     <Compile Include="Models\IspInfo.cs" />
+    <Compile Include="Models\PagedList.cs" />
     <Compile Include="Models\PhysicsAddress.cs" />
     <Compile Include="Models\TaobaoIP.cs" />
     <Compile Include="Mvc\ActionResults\ResumeActionResultBase.cs" />

+ 92 - 0
Masuit.Tools/Models/PagedList.cs

@@ -0,0 +1,92 @@
+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; }
+
+        /// <summary>
+        /// 总页数
+        /// </summary>
+        public int TotalPages { get; }
+
+        /// <summary>
+        /// 页大小
+        /// </summary>
+        public int PageSize { get; }
+
+        /// <summary>
+        /// 总条数
+        /// </summary>
+        public int TotalCount { get; }
+
+        /// <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 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 IOrderedQueryable<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);
+        }
+    }
+}