菜的像徐坤
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

存储过程中处理分页数据

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

前言

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

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

        /// <summary>
        /// 查询数据,返回默认列表对象
        /// </summary>
        /// <param name="cmdText">查询语句</param>
        /// <param name="pageIndex">第几页</param>
        /// <param name="pageSize">每页条数</param>
        /// <param name="param">查询参数</param>
        /// <param name="cmdType"></param>
        /// <returns></returns>
        public List<List<Dictionary<string, object>>> ExecuteDataTableResultByProc(string cmdText, Dictionary<string, object> param = null, CommandType cmdType = CommandType.StoredProcedure)
        {
            var result = new List<List<Dictionary<string, object>>>();

            if (string.IsNullOrEmpty(cmdText))
                return result;
            IDbConnection conn = ConnectionFactory.CreateConnection(_dbType, _strConn);
            using (conn)
            {
                if (conn.State == ConnectionState.Closed)
                    conn.Open();
                try
                {
                    DynamicParameters dynamicParameters = new DynamicParameters();
                    foreach (var item in param.Keys)
                    {
                        dynamicParameters.Add("@" + item, param[item]);
                    }
                    var query = conn.QueryMultiple(cmdText, dynamicParameters, null, ConnectionTimeout, cmdType);
                    while (!query.IsConsumed)
                    {
                        var tempResult = query.Read().ToList().Select(x => ((IDictionary<string, object>)x).ToDictionary(ks => ks.Key, vs => vs.Value)).ToList();
                        result.Add(tempResult);
                    } 
                }
                catch (Exception)
                {
                    throw;
                }
            }
            return result;
        }


评价