1. ホーム
  2. c#

[解決済み] 行を追加しようとすると、「この行はすでに別のテーブルに属しています」エラーが発生する?

2022-02-27 21:28:37

質問

行を持つDataTableがあり、selectで行をフィルタリングしてDataRowsのコレクションを取得し、foreachでループして別のDataTableに追加していますが、エラー "This Row already belongs to another table" が発生します。 以下はそのコードです。

DataTable dt = (DataTable)Session["dtAllOrders"];
DataTable dtSpecificOrders = new DataTable();

DataRow[] orderRows = dt.Select("CustomerID = 2");

foreach (DataRow dr in orderRows)
{
    dtSpecificOrders.Rows.Add(dr); //Error thrown here.
}

解決方法は?

を新規に作成する必要があります。 Row の値で dr を最初に指定します。A DataRow は1つの DataTable .

を使用することもできます。 Add これは、値の配列を受け取ります。

myTable.Rows.Add(dr.ItemArray)

あるいは、もっといいかもしれません。

// This works because the row was added to the original table.
myTable.ImportRow(dr);

// The following won't work. No data will be added or exception thrown.
var drFail = dt.NewRow()
drFail["CustomerID"] = "[Your data here]";
// dt.Rows.Add(row); // Uncomment for import to succeed.
myTable.ImportRow(drFail);