我有一个数据表“dt”。有时我的记录会重复,我会收到此错误:
此行已属于此表。
我想在我的数据表中插入相同的记录。因为我需要将它们显示给我的用户。
这是我的代码:
public DataSet TitForTat()
{
DataSet ds = new DataSet();
DataTable dt = new DataTable("myt");
dt.Columns.Add(new DataColumn("iteration", typeof(int)));
dt.Columns.Add(new DataColumn("prison1", typeof(string)));
dt.Columns.Add(new DataColumn("prison2", typeof (string)));
prison[] prisons = new prison[2];
prisons[0] = new prison();
prisons[1] = new prison();
//---------------------------
DataRow dr = dt.NewRow();
prisons[0]._state = "c";
prisons[1]._state = valueOfState[rd.Next(0, 1)];
dr["iteration"] = 0;
dr["prison1"] = "c";
dr["prison2"] = prisons[1]._state;
dt.Rows.Add(dr);
//----------------------
for (int i = 1; i <= _iteration; i++)
{
prisons[0]._state = prisons[1]._state;
prisons[1]._state = valueOfState[rd.Next(0, 1)];
DataRow dr1 = dt.NewRow();
dr["iteration"] =i;
dr["prison1"] = prisons[0]._state;
dr["prison2"] = prisons[1]._state;
dt.Rows.Add(dr);
}
ds.Tables.Add(dt);
return ds;
}
答案 0 :(得分:1)
您怀念dr1
dr
:
更改此
dt.Rows.Add(dr);
到此
dt.Rows.Add(dr1);
在for循环中。
答案 1 :(得分:0)
如果您尝试将DataRow
添加到已属于此DataTable
的表中,则会引发此异常。您必须复制值或使用ImportRow
dt.Rows.Add(dr);
// ...
// dt.Rows.Add(dr); // no
dt.ImportRow(dr); // yes
// works also, copies the fields to a new row:
// DataRow newRow = dt.Rows.Add(dr.ItemArray);
}