c# - 如何从 DataReader 检索第二个结果集到 Datatable?
问题描述
我有一个 sp 可以带回两组结果。我需要将它们都放在数据表中并将它们转换为数据模型。
如何获得第二组结果?
SqlConnection connection = new SqlConnection(connectionstring);
ce.Database.Initialize(force: false);
connection.Open();
SqlCommand cmd = new SqlCommand("GetJournal", connection);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
var dataTable = new DataTable();
dataTable.Load(reader);
List<Header> headerList = dataTable.AsEnumerable().Select(values =>
new Header
{
HeaderId = values.Field<Int32>("HeaderId").ToString()
}).ToList();
myList1 = headerList;
myList2 = detailList; <_---- I need to populate detail list
是否明确命名所有字段是加载此列表的最有效方式?有没有我可以做的某种序列化?我可以拥有最多 500 列的表格
解决方案
在阅读器未关闭之前,您可以加载更多表格。如果您有多个结果,我建议您填充 a DataSet
,它可以包含多个DataTable
实例:
public static DataSet ToDataSet(IDataReader reader)
{
DataSet ds = new DataSet();
while (!reader.IsClosed)
{
DataTable dt = new DataTable();
dt.Load(reader);
ds.Tables.Add(dt);
}
return ds;
}
推荐阅读
- java - Libgdx 演员 moveTo 动作不起作用
- android - RecyclerView中的片段ClickListener错误
- python - python - 如果此迭代花费太长时间,则继续循环
- r - Git 与 RStudio 的本地替代方案?
- javascript - 如何将 react-dates datepicker 的语言更改为德语?
- c# - 硒 - json - c#
- codeigniter - 在 codeigniter 中使用 mailgun 未在 Yahoo 帐户中接收电子邮件
- asp.net-core - 如何在 ASP NET Core 依赖注入中获取所有已注册的 DbContext(或服务)
- caching - 如何创建清除缓存的 Netlify 部署预览?
- python - 将字符串与 django/python 中的数据库匹配