分页查询(SQL&LINQ)

 1、利用SQL进行分页查询  SQL SEVER分页查询方式有如下几种:TOP NOT IN、Max、ROW_NUMBER或者写存储过程。其中利用ROW_NUMBER() OVER()分页处理,相对效率较高。ROW_NUMBER() OVER()函数的基本用法:对查询结果排序(当然它还可以分组排序,但这里用不到分组)。

ROW_NUMBER() OVER (ORDER BY UpdateTime DESC)  先将结果集按UpdateTime降序排列,然后再将所有记录从1到n开始编号。编号是为了确定查询的每次查询的区间。

查询GoodsType 为"001"或"002"的商品明细,每页显示50条商品详情记录,现在需要查询第二页的记录并且按时间(UpdateTime)倒序展示。

DECLARE @index INT; --索引(起始页为 1)
SET @index= 2; 
DECLARE @pageSize INT;
SET @pageSize = 50; --每页显示的数量
DECLARE @firstIndex INT;  --起始索引
SET @firstIndex = (@index- 1) * @pageSize + 1;
DECLARE @lastIndexINT;  --终止索引
SET @lastIndex= @index* @pageSize; 

--*查询第二页记录*--
SELECT *
FROM
(
    SELECT ROW_NUMBER() OVER (ORDER BY UpdateTime DESC) AS RowNo, *
    FROM dbo.View_GoodsDetail
    WHERE GoodsType in ('001','002')
) AS T
WHERE RowNo
BETWEEN @firstIndex AND @lastIndex;

--计算总页数--
DECLARE @rowsTotal INT;
SET @rowsTotal =
(
    SELECT COUNT(1)
    FROM dbo.View_GoodsDetail
    WHERE GoodsType IN ( '001', '002' )
);

DECLARE @page INT = @rowsTotal/@pageSize+1;  --总页数,其中 @rowsTotal>0

2、LINQ分页处理  使用Skip()和Take()实现分页

     Skip(): 跳过指定的n个元素

     Take():从前往后取指定的m个元素

var goodsList=GoodsItems.Skip(pigeSize* index).Take(pigeSize).OrderBy(p=>p.UpdateTime).ToList(); //GoodsItem为于内存中的商品集合

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值