Feedback

C# - doppelte Zeilen aus DataTable löschen

Veröffentlicht von am 4/16/2007
(2 Bewertungen)
Diese Methode löscht doppelte Zeilen aus einer DataTable.
/// <summary>
/// Removes duplicate rows in a DataTable.
/// </summary>
/// <param name="dataTable">The DataTable.</param> 
/// <param name="columnName">Name of the column</param>
private static void RemoveDuplicateRows(DataTable dataTable, string columnName) 
{
    Hashtable hashTable = new Hashtable();
    List<DataRow> duplicateList = new List<DataRow>();
    foreach (DataRow dataRow in dataTable.Rows)
        try
        {
            hashTable.Add(dataRow[columnName], string.Empty);
        }
        catch
        {
            duplicateList.Add(dataRow);
        }
    foreach (DataRow dataRow in duplicateList)
        dataTable.Rows.Remove(dataRow);
}

Abgelegt unter DataTable, doppelt, DataRow.

2 Kommentare zum Snippet

dbl schrieb am 5/8/2007:
Bekantlicherweise sind Exceptions recht teuer, was Performance angeht, wäre eine Abfrage, ob bereits vorhanden nicht effektiver?

herbivore schrieb am 5/11/2007:
Es ist ein weit verbreitetes Gerücht, dass Exceptions teuer sind. Relativ teuer sind sie allenfalls im Debug-Modus. Für den Releasemodus gilt das nicht. Was letztendlich schneller ist, hängt davon ab, wieviele Einträge doppelt sind, denn die Abfrage mit Contains kostet bei jedem Schleifendurchlauf zusätzlich, die Exception nur, wenn ein Eintrag doppelt ist.
 

Logge dich ein, um hier zu kommentieren!