Im Internet habe ich ein Beispiel gefunden wie ich anhand von Hashtable die doppelten Einträge aus einer DataTable löschen kann.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| Hashtable hashTable1 = new Hashtable(); string columnName1 = "ProtocolID"; List<DataRow> duplicateList1 = new List<DataRow>();
foreach (DataRow dataRow in dataSetPro.Tables["Protocols"].Rows) try { hashTable1.Add(dataRow[columnName1], string.Empty); } catch { duplicateList1.Add(dataRow); } foreach (DataRow dataRow in duplicateList1) dataSetPro.Tables["Protocols"].Rows.Remove(dataRow); |
Ich habe ein DataSet mit zwei DataTables und möchte nicht nur anhand von einem Element die Daten löschen, wie es im Code oben gemacht wurde. Das würde gehen, wenn ich nur zwei Spalten habe. Das gilt bei mir eben nür für eine Tabelle. Die andere beinhaltet Parameter, die die einzelnen Protocole aus der ersten Tabelle beschreiben. In dem Fall möchte ich nicht nur die Einträge aus der zweiten Tabelle löschen, die gleiche IDs haben, da es durchaus möglich ist, sondern nur die, die kommplet gleich sind oder sich nur in der dritten Zeile unterscheiden. Hier ein Beispiel:
Table Protocols:
p1
p2
p3
Table Parameters
p1 n1 12
p1 n2 33
p1 n2 33
p2 n1 11
p3 n2 12
p3 n2 10
In diesem Beispiel solltel die Zeilen 3 und 6 gelöscht werden, da sie entweder gleich sind oder den gleichen Parameter (hier n2) mit zwei Values (hier 12 und 10) beschreiben. Beim letzten Eintrag soll der ältere Eintrag gelöscht werden. Wie kann man sowas realisieren?