0

次のコードを実行しようとしています。私がやろうとしているのは、データセットから 1 つの列を別のデータセットの列の 1 つにコピーすることだけです。コードは次のとおりです。

    int i=0
    foreach (DataRow dr in ds_input.Tables[0].Rows)
    {
     ds_output.Tables["output"].Rows[i]["Serial_Number"] = dr["Serial Number"].ToString();
i++;
    }

の列値をdrtoに代入してdsいるときに、コンパイラは次のエラーを返します。

There is no row at position 0.

次の追加を行っても、同じエラーが返されます。

   int i=0;
     foreach (DataRow dr in ds_input.Tables[0].Rows)
     {
         ds_output.Tables["output"].NewRow();
         ds_output.Tables["output"].Rows[i]["Serial_Number"] = dr["Serial Number"].ToString();
     i++;}
4

1 に答える 1

0

に を追加するDataRow必要がありDataTableます。出力テーブルと入力テーブルに同じ列がある場合DataTable.Clone、データをコピーしないテーブルを複製するために使用できます。次に、入力テーブルからのDataTable.ImportRowコピーを作成し、DataRowそれを出力テーブルに追加するために使用できます。table.Rows.Addまたは、新しいものを追加して、input-DataRow の (すべてのフィールド) をDataRow使用することもできます。ItemArray

DataSet ds_output = new DataSet();
DataTable tblOutput = ds_input.Tables[0].Clone();
ds_output.Tables.Add(tblOutput);
foreach (DataRow dr in ds_input.Tables[0].Rows)
{
    tblOutput.ImportRow(dr);
    // or:
    DataRow newRow = tblOutput.Rows.Add();
    newRow.ItemArray = dr.ItemArray;
}

入力テーブルの完全なコピーを作成する場合は、次を使用できますDataTable.Copy

DataTable tblOutput = ds_input.Tables[0].Copy(); // nothing more needed
于 2013-12-03T09:36:15.917 に答える