如何在mvc中编写分页扩展方法

Mil*_*ara 5 asp.net-mvc extension-methods pagination razor asp.net-mvc-3

我已经定义了静态类来启用分页:

public static class Pager
{
   public static IEnumerable<T> PageData<T>(this IEnumerable<T> source, int currentPage, int pageSize)
   {
       var sourceCopy = source.ToList();

       if (sourceCopy.Count() < pageSize)
       {
            return sourceCopy;
       }

       return sourceCopy.Skip((currentPage - 1) * pageSize).Take(pageSize);
   }
}
Run Code Online (Sandbox Code Playgroud)

我想在我的控制器中做:

var pagedDataCourses = products.OrderBy(p => p.productName).PageData(currentPage, pageSize);
Run Code Online (Sandbox Code Playgroud)

所以我可以放置那个静态类/方法,这样我就可以获得所有控制器中的分页扩展方法.

sti*_*net 5

public static IQueryable<T> Page<T>(this IQueryable<T> query, int page, int pageSize)
{
   int skip = Math.Max(pageSize * (page - 1), 0);
   return query.Skip(skip).Take(pageSize);
}
Run Code Online (Sandbox Code Playgroud)

您必须将其放在与使用扩展的位置相同的命名空间中。或者我们在 .cs 文件顶部使用“using”