如何从数据行复制到具有特定行的另一个数据表

时间:2018-07-03 07:58:19

标签: c# datatable

我有这段代码,但是它只是添加到了新数据表的第一列中。如何指定要添加的列。

        for(int i = 0; i < dt.Rows.Count; i++)
        {
            newdt.Rows.Add(dt.Rows[i][1]);
        }

2 个答案:

答案 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);
}