【问题标题】:MVC Core Compare PagedList vs OrderBy Skip TakeMVC Core 比较 PagedList 与 OrderBy Skip Take
【发布时间】:2018-12-16 12:36:20
【问题描述】:

在 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) Nuget 也使用PagedList

return View(_context.Product.ToPagedList(productpage, pagesize));

【问题讨论】:

    标签: c# asp.net-mvc linq asp.net-core pagination


    【解决方案1】:

    PagedList 也在内部使用SkipTake。如果您查看github 中的PagedList 源代码,您会在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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-12
      • 2018-02-03
      • 1970-01-01
      • 2021-03-26
      • 2013-11-25
      • 1970-01-01
      • 2014-02-11
      • 2014-10-05
      相关资源
      最近更新 更多