相同的记录不能插入数据表中

时间:2013-12-02 09:29:06

标签: c# datatable

我有一个数据表“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;
    }

2 个答案:

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