0

我正在开发一个 ASP.NET MVC 应用程序,我们必须编写自己的分页代码。我看到元素在不同的页面上重复出现。发生这种情况是因为 IQueryable 中元素的顺序随机变化,并且必须为每个页面查询数据库。我通过按创建日期排序元素然后按我想要的顺序解决了这个问题。但我觉得它很重。有没有更好的方法来解决这个问题。

4

3 回答 3

1

如果您通过 IQuerable 从数据库中获取行并在一列上排序,如果该列中存在具有相同值的行,则这些行的顺序可能会有所不同,您需要像现在一样进行操作,即按两列排序,第一个是您真正感兴趣的,然后是第二个(如日期),由于排序是在数据库中完成的,因此不会对性能造成太大影响。

但是需要做的是指定这样的顺序:

  Context.Products
   .Where(p => p.ProductID > 100)
   .OrderBy(p => p.CategoryID)
    .ThenBy(p => p.Date).ToList();

注意 ThenBy,它将生成正确的 SQL。

于 2009-12-15T07:53:02.477 回答
1

不,这是正确的方法。如果您不告诉它按某些东西排序,数据库可能会以不确定的顺序返回行。

于 2009-12-15T09:02:54.367 回答
0

看看:比尔瓦格纳的http://srtsolutions.com/blogs/billwagner/archive/2006/10/14/paging-output-with-linq2sql.aspx

他使用 Take() 和 Skip() 创建分页输出。

于 2009-12-15T16:11:28.680 回答