日期:2014-05-20  浏览次数:20787 次

怎么回事,linq分页数据出来不对
很郁闷的,前几页正常,后面中间就不对了,有好几页竟然是一样的
result = result.Skip(40).Take(20);

result = result.Skip(60).Take(20);

我分析看了生成SQL代码
SELECT TOP 20 *
FROM [dbo].[Pingjia] AS [t0]
WHERE (NOT (EXISTS(
  SELECT NULL AS [EMPTY]
  FROM (
  SELECT TOP 40 [t1].[nID]
  FROM [dbo].[Pingjia] AS [t1]
  WHERE ([t1].[Nianyue] = '2011 年 07 月') AND ([t1].[LingdaoName] IS NOT NULL)
  ) AS [t2]
  WHERE [t0].[nID] = [t2].[nID]
  ))) AND ([t0].[Nianyue] = '2011 年 07 月') AND ([t0].[LingdaoName] IS NOT NULL)


SELECT TOP 20 *
FROM [dbo].[Pingjia] AS [t0]
WHERE (NOT (EXISTS(
  SELECT NULL AS [EMPTY]
  FROM (
  SELECT TOP 60 [t1].[nID]
  FROM [dbo].[Pingjia] AS [t1]
  WHERE ([t1].[Nianyue] = '2011 年 07 月') AND ([t1].[LingdaoName] IS NOT NULL)
  ) AS [t2]
  WHERE [t0].[nID] = [t2].[nID]
  ))) AND ([t0].[Nianyue] = '2011 年 07 月') AND ([t0].[LingdaoName] IS NOT NULL)

前20条是一样的,怪了 !怎么会这样?有什么解决办法

------解决方案--------------------
你result集合是否同一个?
------解决方案--------------------
另外难道是缓存问题么?你可以在控制台下测试一下你的数据。
------解决方案--------------------
用SQL语句取出的数据是否正常?
------解决方案--------------------
1楼代码没有Order by 排序,
------解决方案--------------------
加个 排序 试试。
------解决方案--------------------
探讨

加个 排序 试试。

------解决方案--------------------
没看出啥问题,关注