我有两个DataTables,我需要从一个SqlDataReader填充它们。
原因是我在我的sql查询中创建了join,我想从包含它们的reader中填充两个表。
我使用了DataTable中的Load方法,但这只适用于填充第一个表,因为读取器的光标在第一个Load方法之后被设置为结束。
我试图找到复制SqlDataReader的方法,但这不起作用。
任何想法?
我使用的代码:
var reader = comm.ExecuteReader();
DataTable1 table1=new DataTable1();
DataTable2 table2=new DataTable2();
table1.Load(reader);
table2.Load(reader);
// table2 is empty because of the first load
答案 0 :(得分:0)
使用DataTable.Copy
将table1
的结构和数据复制到table2
。
var reader = comm.ExecuteReader();
DataTable table1 = new DataTable();
table1.Load(reader);
DataTable table2 = table1.Copy();
此外,您应该使用using
:
DataTable table1, table2;
using (reader = comm.ExecuteReader())
{
table1 = new DataTable();
table1.Load(reader);
table2 = table1.Copy();
}
答案 1 :(得分:0)
它可以将每个选择表放入dtList
List<DataTable> dtList = new List<DataTable>();
using (SqlDataReader reader = comm.ExecuteReader())
{
while (!reader.IsClosed && reader.Read())
{
var dt = new DataTable();
dt.Load(reader);
dtList.Add(dt);
}
}