我有一个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列的表格
答案 0 :(得分:1)
在没有关闭阅读器之前,您可以加载其他表。如果您有多个结果,建议您填充一个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;
}