Initial commit
This commit is contained in:
34
PaginatedList.cs
Normal file
34
PaginatedList.cs
Normal file
@@ -0,0 +1,34 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace Catalog26;
|
||||
|
||||
public class PaginatedList<T> : List<T>
|
||||
{
|
||||
public int PageIndex { get; private set; }
|
||||
public int TotalPages { get; private set; }
|
||||
|
||||
public PaginatedList(List<T> items, int count, int pageIndex, int pageSize)
|
||||
{
|
||||
PageIndex = pageIndex;
|
||||
TotalPages = (int)Math.Ceiling(count / (double)pageSize);
|
||||
|
||||
this.AddRange(items);
|
||||
}
|
||||
|
||||
public bool HasPreviousPage => PageIndex > 1;
|
||||
public bool HasNextPage => PageIndex < TotalPages;
|
||||
|
||||
public static async Task<PaginatedList<T>> CreateAsync(
|
||||
IQueryable<T> source, int pageIndex, int pageSize)
|
||||
{
|
||||
var count = await source.CountAsync();
|
||||
var items = await source.Skip(
|
||||
(pageIndex - 1) * pageSize)
|
||||
.Take(pageSize).ToListAsync();
|
||||
return new PaginatedList<T>(items, count, pageIndex, pageSize);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user