菜的像徐坤
排名
7
文章
192
粉丝
15
评论
16
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

存储过程中处理分页数据

3738人阅读 2023/4/25 15:33 总访问:960973 评论:0 收藏:0 手机
分类: .net

前言

有个比较特殊的需求,从存储过程中处理分页数据。需要从存储过程中返回两个结果集(分页逻辑在存储过程中处理)
如下图

提供一个方法返回两个结果集,用键值对接收。

  1.         /// <summary>
  2.         /// 查询数据,返回默认列表对象
  3.         /// </summary>
  4.         /// <param name="cmdText">查询语句</param>
  5.         /// <param name="pageIndex">第几页</param>
  6.         /// <param name="pageSize">每页条数</param>
  7.         /// <param name="param">查询参数</param>
  8.         /// <param name="cmdType"></param>
  9.         /// <returns></returns>
  10.         public List<List<Dictionary<stringobject>>> ExecuteDataTableResultByProc(string cmdText, Dictionary<stringobject> param = null, CommandType cmdType = CommandType.StoredProcedure)
  11.         {
  12.             var result = new List<List<Dictionary<stringobject>>>();
  13.             if (string.IsNullOrEmpty(cmdText))
  14.                 return result;
  15.             IDbConnection conn = ConnectionFactory.CreateConnection(_dbType, _strConn);
  16.             using (conn)
  17.             {
  18.                 if (conn.State == ConnectionState.Closed)
  19.                     conn.Open();
  20.                 try
  21.                 {
  22.                     DynamicParameters dynamicParameters = new DynamicParameters();
  23.                     foreach (var item in param.Keys)
  24.                     {
  25.                         dynamicParameters.Add("@" + item, param[item]);
  26.                     }
  27.                     var query = conn.QueryMultiple(cmdText, dynamicParameters, null, ConnectionTimeout, cmdType);
  28.                     while (!query.IsConsumed)
  29.                     {
  30.                         var tempResult = query.Read().ToList().Select(x => ((IDictionary<stringobject>)x).ToDictionary(ks => ks.Key, vs => vs.Value)).ToList();
  31.                         result.Add(tempResult);
  32.                     } 
  33.                 }
  34.                 catch (Exception)
  35.                 {
  36.                     throw;
  37.                 }
  38.             }
  39.             return result;
  40.         }


评价