[ad_1]
C#
if (NSFwithExtOrSerFound) { int count = 0; foreach (DataRow recRow in dtRec.Rows) { if (recRow[0].ToString() == "Contact Vibration Specialist") { count++; } } foreach (DataRow recRow in dtRec.Rows) { if (recRow[0].ToString() == "Contact Vibration Specialist") { count--; if (count > 0) { recRow[0] = string.Empty; recRow.Delete(); } } } }
データテーブルの特定の行を削除していますが、
C#
recRow.Delete();
次のようなエラーが表示されます [System.InvalidOperationException] = {"Collection was modified; enumeration operation might not execute."}
解決策 1
やあ
1つのルール FOREACH loop コレクションを変更することはできません。 だから使ってみて ために ループ。
これを試して。
C#
for(int i=0; i < dtRec.Rows.Count; i++) { DataRow recRow = dtRec.Rows[i]; if (recRow[0].ToString() == "Contact Vibration Specialist") { count--; if (count > 0) { recRow[0] = string.Empty; recRow.Delete(); dtRec.AcceptChanges(); } } }
それが役に立てば幸い。
解決策 2
次の形式で削除ステートメントを変更する必要があります。
C#
dt.Rows.Remove(dr); dt.AcceptChanges();
ここで、dt は行を削除するデータ テーブルで、dr は削除する必要がある特定の行です。
解決策 3
私は最後の解決策を選びました.解決策2.
ただし、テーブル名の後に acceptchanges() オプションはありません。
解決策 4
dt.Rows.Remove(dr);
dt.AcceptChanges();
[ad_2]
コメント