我有一个数据表,称为dt1(在循环中不断变化)。我还有另一个数据表,称为dt2(最初为空)。现在我需要将dt1的行追加到dt2中。我尝试使用Merge(),但是dt2的先前行消失了。有什么办法可以解决这个问题吗?
ImportRow
方法,如下所示:var table2 = new DataTable();
foreach(DataRow row in table1.Rows)
table2.ImportRow(row);
DataTable dt1 = null; DataTable dt2 = null;
for (int i = 0; i < dt3.Rows.Count; i++)
{
// here "strSQL" is build which changes on the "i" value
dt1 = GetDataTable(strSQL); // this returns a table with single Row
if(dt2 == null)
{
dt2 = dt1.Clone();
}
dt2.Merge(dt1,true);
}
i
的查询限制应用于主键列,则可以使用。dt2.ImportRow(dt1.Rows[0]);
替代
dt2.Merge(dt1,true);
对于João Angelo的答案,另一个派生方法是预先初始化dt2,这样就可以删除空值检查。
DataTable dt1 = null; DataTable dt2 = new DataTable();
for (int i = 0; i < dt3.Rows.Count; i++)
{
// here "strSQL" is build which changes on the "i" value
dt1 = GetDataTable(strSQL); // this returns a table with single Row
dt2.Merge(dt1,true);
}
DataRow[] rows = new DataRow[dt1.Rows.Count];
dt1.Rows.CopyTo(rows, 0);
foreach (DataRow row in rows)
{
dt2.Rows.Add(row);
}
我假设你的表具有相同的结构
foreach (DataRow row in dt1.Rows)
dt2.Rows.Add(row.ItemArray);