Существуют библиотеки, такие как X.PagedList , которые вы можете использовать.Честно говоря, нумерация страниц довольно проста, так что вам это может даже не понадобиться.Все, что вам нужно знать, это номер страницы, размер страницы и общее количество результатов.Номер страницы очевиден из запроса, и размер страницы может также, если вы хотите, чтобы он настраивался, или вы можете жестко его кодировать.
public ActionResult<List<Entry>> GetAll(int page = 1, int size = 10)
Затем вы можете использовать Skip
и Take
для получения данных для конкретной страницы:
var query = _context.Entries;
var entries = await query.Skip((page - 1) * size).Take(size).ToListAsync();
var count = await query.CountAsync();
Затем вам нужно знать только общее количествостраниц, которые можно рассчитать просто с помощью:
var totalPages = (int)Math.Ceil(count / (float)size);
Исходя из этого, вы можете рассчитать все, что вам нужно, например:
var firstPage = 1; // obviously
var lastPage = totalPages;
var prevPage = page > firstPage ? page - 1 : firstPage;
var nextPage = page < lastPage ? page + 1 : lastPage;