oracle Provider先分页后排序的问题?
假设User表数据为:
ID Username CreateTime SeqNum
Guid生成 111 1900/1/13 16:19 6
Guid生成 112 1900/1/13 16:19 3
Guid生成 113 1900/1/13 16:19 2
Guid生成 114 1900/1/13 16:19 5
Guid生成 115 1900/1/13 16:19 4
Guid生成 116 1900/1/13 16:19 1
Guid生成 117 1900/1/13 16:19 7
Guid生成 118 1900/1/13 16:19 9
Guid生成 119 1900/1/13 16:19 8
Guid生成 120 1900/1/13 16:19 10
Guid生成 121 1900/1/13 16:19 16
Guid生成 122 1900/1/13 16:19 13
Guid生成 123 1900/1/13 16:19 14
Guid生成 124 1900/1/13 16:19 12
Guid生成 125 1900/1/13 16:19 11
Guid生成 126 1900/1/13 16:19 17
Guid生成 128 1900/1/13 16:19 20
Guid生成 129 1900/1/13 16:19 19
Guid生成 130 1900/1/13 16:19 15
Guid生成 131 1900/1/13 16:19 18
测试了EntityFramework,在分页的时候,用的是类似下面的语句:
C# code
结果可能如下:
第一页:
ID Username CreateTime SeqNum
Guid生成 116 1900/1/13 16:19 1
Guid生成 113 1900/1/13 16:19 2
Guid生成 115 1900/1/13 16:19 4
Guid生成 111 1900/1/13 16:19 6
Guid生成 117 1900/1/13 16:19 7
Guid生成 119 1900/1/13 16:19 8
Guid生成 118 1900/1/13 16:19 9
Guid生成 123 1900/1/13 16:19 14
Guid生成 130 1900/1/13 16:19 15
Guid生成 131 1900/1/13 16:19 18
第二页:
ID Username CreateTime SeqNum
Guid生成 112 1900/1/13 16:19 3
Guid生成 114 1900/1/13 16:19 5
Guid生成 120 1900/1/13 16:19 10
Guid生成 125 1900/1/13 16:19 11
Guid生成 124 1900/1/13 16:19 12
Guid生成 122 1900/1/13 16:19 13
Guid生成 121 1900/1/13 16:19 16
Guid生成 126 1900/1/13 16:19 17
Guid生成 129 1900/1/13 16:19 19
Guid生成 128 1900/1/13 16:19 20
Oracle默认应该是根据一个伪列RowID来排序的。另外还有个RowNum。
怎样才能让排序变正常呢?
第一页的SeqNum应该是1-10,第二页的SeqNum应该是11-20.
Oracle Provider Beta1和Beta2都试过了,一样的结果...
------解决方案--------------------------------------------------------
Try use .ToList()
var query = (from m in context.User
orderby m.SeqNum
select m).ToList().Skip(skip).Take(take);
------解决方案--------------------------------------------------------
.ToList()是非延迟查询操作符 会将数据全都加载到内存中
在DB中数据量到达一定数量级别后 肯定会影响查询性能
------解决方案--------------------------------------------------------
顶一下
------解决方案--------------------------------------------------------
MsSql 应该没问题,不知道是不是 Oracle 的原因。
------解决方案--------------------------------------------------------
我也遇到这问题,难道只能跟ORACLE反映,在下个版本里改了?
哪个大牛来解决下。
假设User表数据为:
ID Username CreateTime SeqNum
Guid生成 111 1900/1/13 16:19 6
Guid生成 112 1900/1/13 16:19 3
Guid生成 113 1900/1/13 16:19 2
Guid生成 114 1900/1/13 16:19 5
Guid生成 115 1900/1/13 16:19 4
Guid生成 116 1900/1/13 16:19 1
Guid生成 117 1900/1/13 16:19 7
Guid生成 118 1900/1/13 16:19 9
Guid生成 119 1900/1/13 16:19 8
Guid生成 120 1900/1/13 16:19 10
Guid生成 121 1900/1/13 16:19 16
Guid生成 122 1900/1/13 16:19 13
Guid生成 123 1900/1/13 16:19 14
Guid生成 124 1900/1/13 16:19 12
Guid生成 125 1900/1/13 16:19 11
Guid生成 126 1900/1/13 16:19 17
Guid生成 128 1900/1/13 16:19 20
Guid生成 129 1900/1/13 16:19 19
Guid生成 130 1900/1/13 16:19 15
Guid生成 131 1900/1/13 16:19 18
测试了EntityFramework,在分页的时候,用的是类似下面的语句:
C# code
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> var query = from m in context.User select m; query = query.OrderBy(item=>item.SeqNum); //这里得出的query是能够正常按照SeqNum排序的 query = query.Skip(skip).Take(take); //skip为跳过的记录数(假设为0),take为要取的记录数(假设为10) //这里得出的query每页是能正常按SeqNum排序,但总体并不会按SeqNum排序
结果可能如下:
第一页:
ID Username CreateTime SeqNum
Guid生成 116 1900/1/13 16:19 1
Guid生成 113 1900/1/13 16:19 2
Guid生成 115 1900/1/13 16:19 4
Guid生成 111 1900/1/13 16:19 6
Guid生成 117 1900/1/13 16:19 7
Guid生成 119 1900/1/13 16:19 8
Guid生成 118 1900/1/13 16:19 9
Guid生成 123 1900/1/13 16:19 14
Guid生成 130 1900/1/13 16:19 15
Guid生成 131 1900/1/13 16:19 18
第二页:
ID Username CreateTime SeqNum
Guid生成 112 1900/1/13 16:19 3
Guid生成 114 1900/1/13 16:19 5
Guid生成 120 1900/1/13 16:19 10
Guid生成 125 1900/1/13 16:19 11
Guid生成 124 1900/1/13 16:19 12
Guid生成 122 1900/1/13 16:19 13
Guid生成 121 1900/1/13 16:19 16
Guid生成 126 1900/1/13 16:19 17
Guid生成 129 1900/1/13 16:19 19
Guid生成 128 1900/1/13 16:19 20
Oracle默认应该是根据一个伪列RowID来排序的。另外还有个RowNum。
怎样才能让排序变正常呢?
第一页的SeqNum应该是1-10,第二页的SeqNum应该是11-20.
Oracle Provider Beta1和Beta2都试过了,一样的结果...
------解决方案--------------------------------------------------------
Try use .ToList()
var query = (from m in context.User
orderby m.SeqNum
select m).ToList().Skip(skip).Take(take);
------解决方案--------------------------------------------------------
.ToList()是非延迟查询操作符 会将数据全都加载到内存中
在DB中数据量到达一定数量级别后 肯定会影响查询性能
------解决方案--------------------------------------------------------
顶一下
------解决方案--------------------------------------------------------
MsSql 应该没问题,不知道是不是 Oracle 的原因。
------解决方案--------------------------------------------------------
我也遇到这问题,难道只能跟ORACLE反映,在下个版本里改了?
哪个大牛来解决下。
相关推荐
分页存储过程:排序反转分页法 优化后的通用分页存储过程 sql语句 一些Select检索高级用法 SQL server 2005中新增的排序函数及应用 根据基本表结构及其数据生成 INSERT ... 的 SQL 简便的MS SQL 数据库 表内容 脚本 ...
GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...
GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...
GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...
GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...
GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...
GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...
GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...
GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...
GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...
GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...
GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...
GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...
GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...
Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...
Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...