使用linq时,怎样从一个主键有序不连续的表中查询指定位置范围的数据
好吧,刚刚受到xu castor的启发,我去查了查linq有没有类似于top或者limit的方法,结果就查出了Take()和Skip()......用linq查询出IQueryable对象之后,使用.Skip(n).Take(m)可以取出第n+1到第n+m个数据了……
■网友
linq走skip和take,sql走row_number
■网友
野生程序员一枚,对数据库刚入门,提供一个思路,见笑了,你试试看。
查询第m到第n个数据,可以先查询前n个数据,select top n * from table_name order by colum_name asc ,然后再构造一次子查询,倒序查询,select top (n-m+1) * from (select top n * from table_name order by colum_name asc) order by colum_name desc,相当于去头去尾,效率上应该还算过得去吧,而且这个功能上和键是不是有序的没关系,只要键能够比较就OK(当然我怀疑有序的效率会高一些)。
以大名鼎鼎的northwind下的Products表为例:
执行:
select top 5 * from (select top 10 * from Products order by ProductID asc) order by ProductID desc
结果如下:
结果是正确的,但是有个小问题是顺序是降序的,如果有升序要求,可以丧心病狂的再加一层:
【使用linq时,怎样从一个主键有序不连续的表中查询指定位置范围的数据】 select * from (select top 5 * from (select top 10 * from Products order by ProductID asc) order by ProductID desc) order by ProductID asc,这样结果就会按升序排列。
推荐阅读
- 聪明人养花,这3种“花”怎样也要养一盆,每年能省不少医药费
- 『先进』长江流域最先进洗舱站在宁投运 油可分离回收,水能循环使用
- 互联网怎样解决“家政服务上门速度慢”的问题
- 怎样看待从1月8号起,QQ钱包开始提现收费
- 银行it人怎样转型
- 汽车|冬天怎样让车内温度快速升高?座椅加热的最佳使用方式二,外循环的作用总结
- 怎样进入通信行业
- 怎样评价扶他柠檬茶的小说《云养汉》的结尾
- 汽车|迈凯伦Artura不再使用迈凯伦祖传V8引擎了?
- 怎样成为一名合格的Python程序员?
