.NET Framework通过SQL实现分页方法

本文介绍了作者在项目中重写分页方法时,如何通过添加子查询和参数化SQL,实现了一种便捷的分页功能,适用于各种数据库查询的排序和分页需求。
摘要由CSDN通过智能技术生成

前言

一直没什么机会自己从头写一个分页方法,最近工作的一个项目里面的分页方法不太适用目前使用的情况,然后自己从头写了一个

代码实现

注释:因为加了一个子查询,所以入参的sql只要是直接能在数据库查询出来的,都可以直接通过sql传入;入参的order的例子(trueName desc)

/// <summary>
/// 便捷子查询分页sql
/// </summary>
/// <param name="sql">主sql语句</param>
/// <param name="order">排序字段</param>
/// <param name="pageSize">每页条数</param>
/// <param name="pageIndex">页数</param>
/// <returns></returns>
public static string FaPageString(string sql, string order, int pageSize, int pageIndex)
{
    string searchSql = $" ROW_NUMBER() OVER (ORDER BY {order}) AS RowNum ";
    int startPage = (pageIndex - 1) * pageSize + 1;
    int endPage = pageIndex * pageSize;
    var result =
        $@"WITH OrderedTables AS (
            select 
                *,{searchSql}  
            from (
                {sql}
            ) as T
        )
        SELECT 
            *
        FROM 
            OrderedTables
        WHERE 
            RowNum BETWEEN {startPage} AND {endPage}
        ORDER BY 
            RowNum;
        ";
    return result;
}

基础sql语句

------基础结构

WITH OrderedTables AS (
	select 
	    *, ROW_NUMBER() OVER (ORDER BY Id desc) AS RowNum   
	from (
		SELECT *
		FROM Table
	) as T
)
SELECT 
    *
FROM 
    OrderedTables
WHERE 
    RowNum BETWEEN 1 AND 20
ORDER BY 
    RowNum;

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小先生812

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值