0

私の問題は、DataTableに別のDatatableの値を入力できないことです。以下のコード:


        foreach (DataRow row1 in ds.Tables["tests"].Rows)
        {
            //Use value stored in DataTable "tests" to generate
            //new DataTable called "temp" and fill it with values

            foreach (DataRow row2 in ds.Tables["temp"].Rows)
            {
                //use values in "temp"-table to fill fields in "tests"-table
       ->       if (specific condition in Datatable "tests" is met)
                {
                    example1: row1.ItemArray[10] = Convert.ToInt64(row2.ItemArray[0]);
                    example2: ds.Tables["tests"].Rows[row1.Table.Rows.IndexOf(row1)].ItemArray[10] = Convert.ToInt64(row2.ItemArray[0]);
                }
                else if (another specific condition in Datatable "tests" is met)
                {
                    //Different fields will be filled
                }
            }
        }

プログラムをデバッグしようとすると、ifステートメントの開始時にストップポイントを使用すると、プログラムがifステートメントの実行ブロックにジャンプするまですべてが解決されます。

実行ブロックのすべての行がスキップされます。
これが私が受け取る読み出しメッセージです(大まかに翻訳されています):
NonUserCode "System.Data.DataSet.Tables.get" is being skipped.
NonUserCode "System.Data.DataRow.ItemArray.get" is being skipped.

どんな助けでもいただければ幸いです。ありがとう!

4

2 に答える 2

3

ItemArrayを操作する必要はありません。

if (specific condition in Datatable "tests" is met)
{
      row1[10] = Convert.ToInt64(row2[0]); //try this only.
}
else if (another specific condition in Datatable "tests" is met)
{
     //Different fields will be filled
}

ItemArrayにアクセスすると、ローカル配列が返されます。そして、このローカル配列に値を割り当て、データテーブルに変更を加えないことによって。

于 2012-08-28T10:38:01.450 に答える
-1

トピックを確認してみてください:DataRowコピー

于 2012-08-28T10:39:56.813 に答える