You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

50 regels
1.5 KiB

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Threading.Tasks;
  5. namespace Models.List
  6. {
  7. public class PagingList<T> : IPagingList<T>
  8. {
  9. public PagingList() { }
  10. public PagingList(IList<T> data, int totalRecords, int totalPages, int perPage, int page)
  11. {
  12. Data = data;
  13. TotalRecords = totalRecords;
  14. TotalPages = totalPages;
  15. PerPage = perPage;
  16. Page = page;
  17. }
  18. public static IPagingList<T> Create(IList<T> list, int perPage, int page)
  19. {
  20. var count = list.Count;
  21. var skip = (page - 1) * perPage;
  22. var take = perPage;
  23. var pages = (int)Math.Ceiling((decimal)count / take);
  24. var data = list.Skip(skip).Take(take).ToList();
  25. return new PagingList<T>(data, count, pages, perPage, page);
  26. }
  27. public static async Task<IPagingList<T>> Create(IQueryable<T> query, int perPage, int page)
  28. {
  29. var count = query.Count();
  30. var skip = (page - 1) * perPage;
  31. var take = perPage;
  32. var pages = (int)Math.Ceiling((decimal)count / take);
  33. var data = query.Skip(skip).Take(take).ToList();
  34. return new PagingList<T>(data, count, pages, perPage, page);
  35. }
  36. public IList<T> Data { get; set; }
  37. public int TotalRecords { get; set; }
  38. public int TotalPages { get; set; }
  39. public int PerPage { get; set; }
  40. public int Page { get; set; }
  41. }
  42. }