LINQ y paginación

Necesitamos obtener datos de una base de datos usando LINQ. Ahora necesitamos implementar la paginación.

Supongo que a la vez tenemos que buscar 10 registros a la vez y cuando haga clic en el botón Siguiente, obtendrá los próximos 10 registros de db.

Por favor, guíame con el código. Gracias

Yo siempre uso el siguiente 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); } } 

Esa es una clase estática, que puede incluir en sus fonts. Después de agregar esta clase, puede hacer lo siguiente:

 MyQuery.Page(pageNumber, pageSize) 

La función LINQ Take () limitará la cantidad de elementos que se toman. La función Omitir () ignorará los primeros n elementos. Algo como esto podría funcionar:

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

.Skip pueden usar los métodos de extensión .Skip y .Skip :

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