Immer wieder muss ich aus einer vorhandenen DataTable alle eindeutigen Zeilen rausschreiben. An und für sich keine schwere Aufgabe. Da ich mir das aber nie merken kann – und damit ich nicht immer suchen muss -, hier die Lösung.
Vielleicht kann es ja noch jemand brauchen.
string[] columnNames = sourceTable.Columns.Cast<DataColumn>().Select(x => x.ColumnName).ToArray();
DataTable distinctTable = new DataView(sourceTable).ToTable(true, columnNames);
Hier ein paar kurze Erläuterungen dazu.
In der ersten Zeile werden alle Spaltennamen der Quelletabelle ermittelt und in ein Array geschrieben. Dieses Array ist wichtig, da Anhand dieser Spaltennamen in Zeile 2 die Eindeutigkeit einer Zeile festgestellt wird.
In Zeile 2 wird nun ein DataView von der Quelltabelle erzeugt und dieses wieder in eine Tabelle konvertiert. Der Trick ist nun in der Methode ‘ToTable’ zu finden. Hier besagt der erste Parameter, dass die Tabelle nur eindeutige Zeilen enthalten darf. Der zweite Parameter gibt die Spaltennamen an mit deren Hilfe die Eindeutigkeit geprüft wird.