LINQ e paginação

Precisamos buscar dados de um database usando o LINQ. Agora precisamos implementar a paginação.

Suponho que, de cada vez, precisamos buscar 10 registros por vez e quando clicamos no botão Next, ele buscará os próximos 10 registros do database.

Por favor me guie com código. obrigado

Eu sempre uso o seguinte código:

 public static class PagingExtensions { //used by LINQ to SQL public static IQueryable Page(this IQueryable source, int page, int pageSize) { return source.Skip((page - 1) * pageSize).Take(pageSize); } //used by LINQ public static IEnumerable Page(this IEnumerable source, int page, int pageSize) { return source.Skip((page - 1) * pageSize).Take(pageSize); } } 

Essa é uma class estática, que você pode include em suas fonts. Depois de adicionar essa class, você pode fazer o seguinte:

 MyQuery.Page(pageNumber, pageSize) 

A function LINQ Take () limitará a quantidade de itens que serão usados. A function Skip () irá ignorar os primeiros n itens. Algo como isso pode funcionar:

 myDataSource.Skip(pageSize * curPage).Take(pageSize) 

.Skip methods de extensão .Skip e .Skip podem ser usados:

 var result = (from c in Customers select new { c.City, c.ContactName } ).Skip(5).Take(5);