12/9/2019 12:21:13 AM

The following is a function that queries a table (Users) and returns a single page. The main points:

  • Query requires a sort by clause
  • Function determines how many rows to skip
  • Function tells LINQ how many rows to take

List Users by Page

public async Task> List(int page, int recordsPerPage)
	//primary query
	//must have an order by clause
	var query = from users in this._DbContext.Users

				orderby users.Id

				select users;

	//how many records should we skip over (ex: page 1, skip over none);
	var recordsToSkip = this.Get_RecordsToSkip(page, recordsPerPage);

	//skip results, take page size, and return
	return await query.Skip(recordsToSkip).Take(recordsPerPage).ToListAsync();

Function to Determine How Many Records to Skip

public int Get_RecordsToSkip(int page, int recordsPerPage)
	int recordsToSkip = 0;
	if (page <= 0)
		page = 1;
	recordsToSkip = (page * recordsPerPage) - recordsPerPage;

	return recordsToSkip;