【解決方法】データテーブルの特定の行を削除する


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();

コメント

タイトルとURLをコピーしました