Paging
You can use Skip and Take to implement paging with Specification.
Example
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)
.Skip(skip)
.Take(take);
}
}
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.