using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace Models.List { public class PagingList : IPagingList { public PagingList() { } public PagingList(IList data, int totalRecords, int totalPages, int perPage, int page) { Data = data; TotalRecords = totalRecords; TotalPages = totalPages; PerPage = perPage; Page = page; } public static IPagingList Create(IList list, int perPage, int page) { var count = list.Count; var skip = (page - 1) * perPage; var take = perPage; var pages = (int)Math.Ceiling((decimal)count / take); var data = list.Skip(skip).Take(take).ToList(); return new PagingList(data, count, pages, perPage, page); } public static async Task> Create(IQueryable query, int perPage, int page) { var count = query.Count(); var skip = (page - 1) * perPage; var take = perPage; var pages = (int)Math.Ceiling((decimal)count / take); var data = query.Skip(skip).Take(take).ToList(); return new PagingList(data, count, pages, perPage, page); } public IList Data { get; set; } public int TotalRecords { get; set; } public int TotalPages { get; set; } public int PerPage { get; set; } public int Page { get; set; } } }