标签: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 }
标签:ace rev extension pre using page selector index space
原文地址:https://www.cnblogs.com/microestc/p/12113502.html