日期:2014-05-17  浏览次数:20774 次

学校的分页不实用啊
原来我用的分页

  var query = (from u in table select u).Skip(10*0).Take(10);

但是这种分页有很大问题
如果是动态数据的话 
数据库有十条数据Id分别是1 2 3 4 5 6 7 8 9 10
默认按照时间排序的话 第一页是6 7 8 9 10 第二页是1 2 3 4 5
如果这时候 这个数据表中多了一条数据(例如有人评论了)
我刚才如果加载第一页6 7 8 9 10的数据
这会多了一条新数据 那么我点第二页的数据是 2 3 4 5 6这几条数据(不是原来的1 2 3 4 5了)
那么第二页就会和第一页的数据有一条重复 Id是6

有没有好点的分页方法

------解决方案--------------------
引用:
Quote: 引用:

这关分页什么事,本来这样子做就是对的
但是会出现重复的数据啊

这个重复本来就是应该的
你这是点第一页的话显示的是11-7,如果按你的想法,那第一页数据不就不对了,新增的数据到哪里去找呢
------解决方案--------------------
按时间通常也可以按自增ID,聚合函数+主键效率更好
如果你非要那么做,可以将当前页的Max(Id)也传过去作为查询条件

但是,我更同意#9的说法,显示的差异是因为数据的变动,完全可以理解为之前那一页的数据是过期的
夸张一点的讲,开一个网页放一天不动,再刷新时分页数据跳动是很正常的