有两种方法可以在MVC Core中为列表创建页面。例如,我有20个项目的清单,并且想要每页显示5个项目,例如购物网站。
使用一种方法与另一种方法相比有什么好处/比较,是否有一般的行业惯例?我想了解许多不同的工作方式,想看看是否有最佳方法
1)有一种OrderBy-Skip-Take
方法
public ViewResult List(int productpage = 1)
=> View(repository.Products
.OrderBy(p => p.ProductID)
.Skip((productpage - 1) * pagesize)
.Take(pagesize));
2)还有使用PagedList
return View(_context.Product.ToPagedList(productpage, pagesize));
答案 0 :(得分:0)
PagedList
也在内部使用Skip
和Take
。如果您查看PagedList
中的github源,则会在PagedListExtensions
类中找到类似的内容:
if (superset.Count() < pageSize)
yield return superset;
else
{
var numberOfPages = Math.Ceiling(superset.Count() / (double)pageSize);
for (var i = 0; i < numberOfPages; i++)
yield return superset.Skip(pageSize * i).Take(pageSize);
}
参考:https://github.com/troygoode/PagedList/blob/master/src/PagedList/PagedListExtensions.cs 并且:http://www.extensionmethod.net/1882/csharp/queryover/topagedlist