新しい行を追加しようとしている DataTable dt2 があります (以下のコードの else ブロック内)。foreach ループ内に単純に行を追加することはできません (行で試しましたdt2.Rows.Add(newRow);
)。これは、ループ カウンターまたは何かを台無しにし、次のエラーが発生するためです。「コレクションが変更されました。列挙操作が実行されない可能性があります。」
そこで、新しい行の値をリストに格納してから、リストをループ外のテーブルに追加しようとしました。これは、コンパイルして何かを追加するという意味で機能します。残念ながら、正しい値または列の場所を取得しませんが、代わりに次のがらくたを表示します: System.Collections.Generic.List`1[System.Object]
また、この情報は、Baseline_Folder の下ではなく、Target_Folder、Target_File、および Target_Checksum の下の 3 番目、4 番目、および 5 番目のインデックス列に表示される必要があります。
正しい列の下に正しい値を保存して表示するにはどうすればよいですか?
foreach (DataRow drow in dt2.Rows)
{
if (drow["BASELINE_FILE"].ToString() == filename)
{
// do stuff
}
else
{
newRow = dt2.NewRow(); // newRow is a DataRow I declared up above
newRow[3] = directory;
newRow[4] = filename;
newRow[5] = checksumList[j];
newRow[6] = "Missing";
//dt2.Rows.Add(newRow);
// can't add here because that increases the number of rows and screws up the foreach loop
// therefore need to find way to store these values and add outside of loop
newFiles.Add(newRow); // newFiles is a List
}
}
dt2.Rows.Add(newFiles); // this doesn't work properly, doesn't take correct values