首页 > Windows开发 > 详细

c# 分页 PaginatedList<TResult>

时间:2019-12-29 01:02:52      阅读:139      评论:0      收藏:0      [点我收藏+]
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 
 5 namespace Microestc.PaginatedList
 6 {
 7     public class PaginatedList<TResult> : List<TResult>
 8     {
 9         public PaginatedList() : base() { }
10 
11         public PaginatedList(IEnumerable<TResult> items, int totalCount, int pageIndex, int pageSize) : base(items)
12         {
13             TotalCount = totalCount;
14             PageCount = (totalCount + pageSize - 1) / pageSize;
15             PageIndex = pageIndex;
16             PageSize = pageSize;
17             HasPrev = pageIndex > 1;
18             HasNext = pageIndex < PageCount;
19         }
20 
21         public virtual int TotalCount { get; private set; }
22 
23         public virtual int PageCount { get; private set; }
24 
25         public virtual int PageIndex { get; private set; }
26 
27         public virtual int PageSize { get; private set; }
28 
29         public virtual bool HasPrev { get; private set; }
30 
31         public virtual bool HasNext { get; private set; }
32     }
33 
34     public static class PaginatedListExtensions
35     {
36         public static PaginatedList<TResult> PaginatedList<TResult>(this IEnumerable<TResult> source, int pageIndex, int pageSize)
37         {
38             var count = source.Count();
39             var items = source.Skip((pageIndex - 1) * pageSize).Take(pageSize);
40             return new PaginatedList<TResult>(items, count, pageIndex, pageSize);
41         }
42 
43         public static PaginatedList<TResult> PaginatedList<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, TResult> selector, int pageIndex, int pageSize)
44         {
45             var count = source.Count();
46             var items = source.Skip((pageIndex - 1) * pageSize).Take(pageSize).Select(selector);
47             return new PaginatedList<TResult>(items, count, pageIndex, pageSize);
48         }
49     }
50 }

c# 分页 PaginatedList<TResult>

原文:https://www.cnblogs.com/microestc/p/12113502.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!