码迷,mamicode.com
首页 > Windows程序 > 详细

c# 分页 PaginatedList<TResult>

时间:2019-12-29 00:33:58      阅读:96      评论:0      收藏:0      [点我收藏+]

标签:ace   rev   extension   pre   using   page   selector   index   space   

 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>

标签:ace   rev   extension   pre   using   page   selector   index   space   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!