C# 无法在数据表中保存多个数据行

C# 无法在数据表中保存多个数据行,c#,C#,我想在datatable中保存多行,但它不起作用。输出错误(ArgumentException)为: 行已属于另一个表 我的代码: 当我点击第二个表单中的“Ok”时,它将执行以下代码: private void writerow() { DataRow r = settings.NewRow(); r["Folder"] = folderTextBox.Text; r["Filter"] = filterTextBox.Text; r["Subject"] = s

我想在datatable中保存多行,但它不起作用。输出错误(ArgumentException)为: 行已属于另一个表

我的代码:

当我点击第二个表单中的“Ok”时,它将执行以下代码:

private void writerow()
{
    DataRow r = settings.NewRow();
    r["Folder"] = folderTextBox.Text;
    r["Filter"] = filterTextBox.Text;
    r["Subject"] = subjectTextBox.Text;
    r["Body"] = bodyTextBox.Text;
    FolderWatch.setfolderasdatarow(r); // save in a static List<DataRow>
    Foldersetting = settings;
}
private DataTable Foldersetting
{
    get { return datatblfoldersetting; }
    set { datatblfoldersetting = value; }
}

无法将
数据行
添加到已是另一个
数据表
一部分的
数据表

使用此重载创建新的
数据行

foreach (DataRow d in FolderWatch.getfolderasdatarow())
{
    Foldersetting.Rows.Add(d.ItemArray);
}

异常信息清晰;“行已属于另一个表。” 不能添加作为另一个数据表成员的行

d无法添加Foldersetting.Rows

你应该使用

var fr = Foldersetting.NewRow();
并将d列映射到添加的fr行。最简单的例子

fr["column1"] = d["column1"];
fr["column2"] = d["column2"];

或者您可以使用。是的,
ImportRow
也是一个选项,但您必须记住,
ImportRow
保留应添加的
DataRow
DataRowState
。不过,在这种情况下可能不是问题。
fr["column1"] = d["column1"];
fr["column2"] = d["column2"];