C# Interview Question #177

How should pagination be implemented with EF Core?

EF Core, Data Access & Performance Senior Advanced

Quick Interview Answer

Pagination prevents large datasets from being loaded into memory or sent to the client at once.

Detailed Explanation

Pagination prevents large datasets from being loaded into memory or sent to the client at once.

Offset pagination commonly uses OrderBy, Skip, and Take. A deterministic ordering should be applied before pagination.

For very large or frequently changing datasets, keyset or seek pagination can be more efficient and stable than large Skip offsets. The best strategy depends on UI requirements, sorting, and navigation behavior.

Code Example

int page = 2;
int pageSize = 20;

var products = await _context.Products
    .AsNoTracking()
    .OrderBy(p => p.Id)
    .Skip((page - 1) * pageSize)
    .Take(pageSize)
    .ToListAsync();