Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

LINQ and pagination [duplicate]

Tags:

c#

linq-to-sql

We need to fetch data from a database using LINQ. We now need to implement pagination.

I suppose at a time we need to fetch 10 records at a time and when we click the Next button then it will fetch the next 10 records from db.

Please guide me with code. thanks

like image 548
Mou Avatar asked May 31 '11 08:05

Mou


2 Answers

I always use the following code:

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

That is a static class, which you can include in your sources. After adding this class you can do the following:

MyQuery.Page(pageNumber, pageSize) 
like image 180
Wim Haanstra Avatar answered Sep 22 '22 08:09

Wim Haanstra


The LINQ Take() function will limit how many items are taken. The Skip() function will ignore the first n items. Something like this might work:

myDataSource.Skip(pageSize * curPage).Take(pageSize) 
like image 22
dlev Avatar answered Sep 25 '22 08:09

dlev