Vergleichen und löschen von datatable-Zeile mit C#:

Ich habe zwei Tabellen wie DTTable1 und DTTable2. Es hat die folgenden Datensätze.

DTTable1:

    ItemID     Specification    Amount
   ---------  ---------------  ---------
      1             A             10
      1             B             20
      1             C             30

DTTable1:

    ItemID     Specification    Amount
   ---------  ---------------  ---------
      1             A             10
      1             B             20
      1             C             30
      2             A             10
      2             B             20
      3             A             10
      3             B             20

Hier möchte ich den Vergleich dieser beiden Tabellen. Wenn DTTable1 Einträge vorhanden in DTTable2(nur die ItemID), dann entfernen Sie die entsprechenden Zeilen, die hat die ItemID gleiche wie DTTable1.

Ich habe versucht, foreach und forloop.
Mit ForEach:

   foreach (DataRow DR in DTTable2.Rows)
   {
      if (DR["ItemID"].ToString() == DTTable1.Rows[0]["ItemID"].ToString())
      {
           DTTable2.Rows.Remove(DR);                            
      }
   }
   DTTable2.AcceptChanges();

Zeigte es den Fehler,
"Die Auflistung wurde geändert; der Enumerationsvorgang kann nicht ausgeführt werden". So habe ich eine For-Schleife, die Es auch nicht gegeben das gewünschte Ergebnis.

Mittels For-Schleife:

   for (int i = 0; i < DTTable2.Rows.Count; i++)
   {
       if (DTTable2.Rows[i]["ItemID"].ToString() == DTTable1.Rows[0]["ItemID"].ToString())
       {
           DTTable2.Rows.RemoveAt(i);
       }
   }
   DTTable2.AcceptChanges();

Aber manchmal, die zweite Zeile nicht entfernen aus der Tabelle. Ich bekomme die Letzte DataTable als

    ItemID     Specification    Amount
   ---------  ---------------  ---------
      1             B             20
      2             A             10
      2             B             20
      3             A             10
      3             B             20

Wie man dieses Problem lösen? Was ist die einfachste Methode, dies zu tun?

Sind Sie bei der Auswahl diese Datensätze aus der Datenbank, wenn das so ist, kann ich Ihnen helfen, mit der die Abfrage durchgeführt werden, wählen Sie nur die benötigten Datensätze als deutlich effizienter ist es, um es getan mit sql

InformationsquelleAutor thevan | 2012-10-10

Schreibe einen Kommentar