Wenn wir ein DataView mit Sortierung für mehrere Spalten erstellen, müssen wir bei Verwendung von FindRows Werte für alle Spalten angeben.Generische hierarchische DataView-Klasse mit dynamischen Ebenen von Sortierschlüsseln
Beispiel, wenn ich:
dv1 = new DataView(tbl1, null, "Col1, Col2, Col3", DataViewRowState.CurrentRows);
Ich bin gezwungen, Werte für alle drei Spalten angeben, wenn FindRows verwenden.
Es ist nicht möglich, alle Zeilen für einen bestimmten Wert von Col1 und "beliebige" Werte für Col2 und Col3 abzurufen.
Dies ist in einer SortedList möglich, wo ich SortedList geschachtelt haben kann. Die SortedList der obersten Ebene hat also den Schlüssel als Col1 und den Wert als eine andere SortedList. Die SortedList der zweiten Ebene hat einen Schlüssel als Col2 und einen Wert als eine andere SortedList. Schließlich hat die SortedList der dritten Ebene den Schlüssel Col3 und die Verweise auf die DataRows.
eine solche SortedList verwenden, ist es möglich, Methoden zu schreiben, wie:
public DataRowView[] FindAny(object[] keys)
wo, wenn die Schlüssel Array nur 1 Schlüssel enthält, kann der Code der zweiten Ebene SortedList aus der 1. Ebene SortedList für die finden Taste, und durchlaufen Sie dann die SortedList der 2. und 3. Ebene und geben Sie alle Zeilen zurück, die zum ersten Schlüssel gehören.
Meine Frage ist, ob jemand bereits eine solche SortedList Klasse geschrieben hat, die dynamische Anzahl von Schlüsseln nehmen kann und mit jeder DataTable/DataRow arbeiten kann.
Hinweis: 1. Diese Frage hat nichts mit Präsentationsschicht zu tun. Ich suche eine Hilfsklasse für die Datenverarbeitung, zum Beispiel für die Analyse großer Datenmengen in mehreren Excel-Tabellen. 2. Ich bin derzeit nicht auf der Suche nach einer LINQ-basierten Lösung. Ich werde in Zukunft zu LINQ migrieren.
Danke.
Wenn Sie daran interessiert sind, dann 'System.Linq.Dynamic' (Nuget Bibliothek) kann die Frage auf der Hand lösen jetzt –
können Sie pls die Linq-Code für meine zukünftige Referenz schreiben. Lassen Sie mich sehen, wie einfach es ist, zu migrieren – AllSolutions
Überprüfen Sie die Lösung, unter der die RowFilter-Eigenschaft von DataView zum Filtern –