如何从一个SqlDataReader填充两个DataTable

时间:2013-07-30 09:06:35

标签: c# datatable sqldatareader

我有两个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

2 个答案:

答案 0 :(得分:0)

使用DataTable.Copytable1的结构和数据复制到table2

var reader = comm.ExecuteReader();
DataTable table1 = new DataTable();
table1.Load(reader);
DataTable table2 = table1.Copy();

Msdn: DataTable.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);
    }
}