You can use Skip and Take to implement paging with Specification.


A simple Specification with paging might look something like this:

public class StoresByCompanyPaginatedSpec : Specification<Store>
    public StoresByCompanyPaginatedSpec(int companyId, int skip, int take)
        Query.Where(x => x.CompanyId == companyId)

Find the most recent version of this Specification here.

How paging should work

To implement paging, you should Skip i * n entries, where i is the index of the page you’re on (starting from zero), and n is the number of entries per page. Then you should Take n entries. When paging through a set of data, each request must include the appropriate Skip and Take values for the page being requested.