我有这段代码,但是它只是添加到了新数据表的第一列中。如何指定要添加的列。
for(int i = 0; i < dt.Rows.Count; i++)
{
newdt.Rows.Add(dt.Rows[i][1]);
}
答案 0 :(得分:2)
如果您希望不能使用Add
传递值,但可以使用SetField
:
for(int i = 0; i < dt.Rows.Count; i++)
{
DataRow addedRow = newdt.Rows.Add();
addedRow.SetField(1, dt.Rows[i][1]);
}
或者您可以使用“经典”方式:
addedRow[1] = dt.Rows[i][1];
与索引器相比,我更喜欢SetField
,因为如果我想保存空值,则不需要摆弄DbNull.Value
。您可以简单地传递一个int?
之类的可为空的类型。
答案 1 :(得分:0)
下面的代码演示了如何将特定行复制到另一个表。
//Created new table
DataTable dt1 = new DataTable("dt1");
dt1.Columns.Add("Id", typeof(int));
dt1.Columns.Add("Name");
//Added dummy data
dt1.Rows.Add(1, "Abc");
dt1.Rows.Add(2, "Def");
//Clone table #2 from table #1
DataTable dt2 = dt1.Clone();
dt2.TableName = "dt2";
//Copy table #1 rows to table #2
for (int i = 0; i < dt1.Rows.Count; i++)
{
DataRow drNew = dt2.NewRow();
drNew.ItemArray = dt1.Rows[i].ItemArray;
dt2.Rows.Add(drNew);
}