CodePaste Logo
New Snippet New Snippet Recent Snippets Recent Snippets My Snippets My Snippets Web Code Search Snippets Search
Sign inor Register
Language: C#

IQueryable Linq Pagination Extension

548 Views
Copy Code Show/Hide Line Numbers
   1:  public static List<T> Page<T, TResult, TResult1>(this List<T> obj, int page, int pageSize,
   2:          System.Linq.Expressions.Expression<Func<T, TResult>> keySelector,
   3:          bool asc, out int rowsCount, bool isThenBy, System.Linq.Expressions.Expression<Func<T, TResult1>> thenByClause)
   4:      {
   5:          rowsCount = obj.Count();
   6:          if (asc)
   7:          {
   8:              if (isThenBy)
   9:                  return obj.AsQueryable().OrderBy(keySelector).ThenBy(thenByClause).Skip((page == 0 ? 0 : page - 1) * pageSize)
  10:                              .Take(pageSize).ToList();
  11:              return obj.AsQueryable().OrderBy(keySelector).Skip((page - 1) * pageSize)
  12:                          .Take(pageSize).ToList();
  13:          }
  14:          if (isThenBy)
  15:              return obj.AsQueryable().OrderByDescending(keySelector).ThenByDescending(thenByClause).Skip((page == 0 ? 0 : page - 1) * pageSize)
  16:                          .Take(pageSize).ToList();
  17:          return obj.AsQueryable().OrderByDescending(keySelector).Skip((page - 1) * pageSize)
  18:                      .Take(pageSize).ToList();
  19:      }
by Giuliano Lemes
  July 28, 2009 @ 6:19am
Tags:
Description:
To paginate your Linq Iqueryable

Add a comment


Report Abuse
brought to you by:
West Wind Techologies



If you find this site useful and use it frequently please consider making a donation to support this free service.
Donate