1234567891011121314151617181920212223242526272829303132333435363738394041 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace Ropin.Inspection.Model.Common
- {
- public class PagedList<T> : List<T>
- {
- public int CurrentPage { get; private set; }
- public int TotalPages { get; private set; }
- public int PageSize { get; private set; }
- public int TotalCount { get; private set; }
- public bool HasPrevious => CurrentPage > 1;
- public bool HasNext => CurrentPage < TotalPages;
- public static async Task<PagedList<T>> CreateAsync(IQueryable<T> source, int pageNumber, int pageSize)
- {
- var totalCount = source.Count();
- var items = source.Skip((pageNumber - 1) * pageSize).Take(pageSize).ToList();
- var list = new PagedList<T>(items, totalCount, pageNumber, pageSize);
- return await Task.FromResult(list);
- }
- public static PagedList<T> Create(List<T> source, int pageNumber, int pageSize)
- {
- var totalCount = source.Count();
- var list = new PagedList<T>(source, totalCount, pageNumber, pageSize);
- return list;
- }
- public PagedList(List<T> items, int totalCount, int pageNumber, int pageSize)
- {
- TotalCount = totalCount;
- CurrentPage = pageNumber;
- PageSize = pageSize;
- TotalPages = (int)Math.Ceiling((double)totalCount / PageSize);
- AddRange(items);
- }
- }
- }
|