我正在开发一个ASP.NET MVC应用程序,我们必须编写自己的分页代码。 而且我看到元素在不同的页面上重复。发生这种情况是因为IQueryable中元素的顺序随机变化,必须为每个页面查询数据库。 我通过按照创建日期排序元素,然后按我想要的顺序来解决此问题。但我感觉它很重。有没有更好的方法来解决这个问题。元素的顺序在IQueryable中有所不同,每当我用相同的条件查询时
0
A
回答
1
如果您通过IQuerable从数据库中获取行并在一列上进行排序,如果在该列中具有相同值的行的顺序可能会有所不同,那么您需要按照现在的方式进行操作,即按两列排序,首先是你真正感兴趣的那一列,然后是第二列(如日期),因为排序是在数据库中完成的,所以不应该有那么大的性能影响。
但是需要做的是指定如下排序:
Context.Products
.Where(p => p.ProductID > 100)
.OrderBy(p => p.CategoryID)
.ThenBy(p => p.Date).ToList();
通知的ThenBy,将产生正确的SQL。
1
不,这是正确的方法。如果您不告诉它按某种顺序排列,数据库可能会以非确定性顺序返回行。
0
看一看:Bill Wagner的http://srtsolutions.com/blogs/billwagner/archive/2006/10/14/paging-output-with-linq2sql.aspx。
他使用Take()和Skip()创建分页输出。
相关问题
- 1. SQL排序顺序与MS-ACCESS与.NET中的相同查询有所不同
- 2. 比较具有不同顺序的相同元素的数组
- 3. 以不同的顺序检测具有相同元素的行
- 4. 有条件的addClass不能用于具有相同类的每个元素
- 5. 检查查询中不同表格中的相同条件
- 6. 当在JVM5 vs JVM6中运行相同的程序时,HashMap中的项目顺序有所不同
- 7. “选择”元素的顺序是否有所不同?
- 8. Sqlite查询:在字段的所有元素中插入相同的值
- 9. 当ID相同时获取所有数据的查询
- 10. 访问查询不同记录时,所有行相同
- 11. 如何遍历相同类型的所有html元素,但对每个元素应用不同的更改?
- 12. 我可以使用相同的Linq代码来查询不同的条件吗?
- 13. 我怎样才能db.collection.count()在不同的条件相同的查询?
- 14. C++向量中的所有元素指向相同的元素
- 15. ruby中的.each迭代器是否保证每次都在相同的元素上给出相同的顺序?
- 16. Linq查询列表中包含有相同的顺序
- 17. 所有元素都相同,但不完全相同?
- 18. ActiveRecord为相同的条件产生不同的查询
- 19. 每个数组元素上的相同SQL查询
- 20. Gojs - 画布中的图元素顺序在Chrome和Mozilla之间有所不同
- 21. 在Watir Ruby中访问顺序相同的元素
- 22. 在std :: multiset中维护插入顺序相同的元素
- 23. 当我运行相同的查询
- 24. 在ClearCase中查找相同的元素
- 25. 在不同的元素在不同的时间使用相同的动画
- 26. 加入2查询有相同的信息只有不同的搜索条件
- 27. 当我点击相同的元素时如何触发不同的功能?
- 28. CorePlot - CPTTimeFormatter为我的条形图的每个元素提供相同的时间
- 29. 如何检查列表中的所有元素是否相同?
- 30. 不同条件下的相同列查询
它有什么不同,如果我写.OrderBy(p => p.CategoryID) .OrderBy(p => p.Date).ToList()? – San 2009-12-15 07:58:19
因为那么你通过categoryId来排列列表,然后再按日期排序,第一个排序(按类别)不会生效,列表将按日期排序。 ordernig类别的唯一影响是具有相同日期的项目将按id排序,因此实际上应该相当于执行OrderBy(p => p.Date)。ThenBy(p => p.CategoryID)但不是肯定的是,这取决于OrderBy函数的实现。 – Torkel 2009-12-16 19:10:55