.NET: Paging With Entity Framework EF

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;
}