排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256
50010702506256
欢迎加群交流技术
分类:
.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;
}评价