2009-06-24 17 views
5

mit dieser schrecklichen Datenstruktur Ended up:für eine alterantive Suche zur Liste <KeyValuePair <string, KeyValuePair <string, string >>>

List<KeyValuePair<string, KeyValuePair<string, string>>> 

es nicht wahrscheinlich ist riesig bekommen (< 1K ich schätzen) und Ich wiederhole diese Liste immer und immer wieder.

Jeder kann sich eine bessere Alternative mit eingebauten Typen vorstellen?

+1

Antworten auf diese Frage könnten hilfreich sein http://stackoverflow.com/questions/101825/whats-the- best-way-of-using-a-pair-dreifach-etc-of-values-als-ein-wert-in-c –

Antwort

10

Die beste Option wäre, Ihre eigene Tuple-Klasse, wie die eine shipping in .NET 4.0.

Dann könnte man eine einzige haben:

List<Tuple<string,string,string>> 

Diese einfach genug ist .NET 2.0 zu schreiben, in - es ist im Grunde nur ein Triplett von Werten, anstatt in einem KeyValuePair 2. Für ein Triplet von Werten in .NET 2.0 gibt es jedoch kein integriertes Equivalent.


Edit:

Nachdem Sie Ihren Kommentar lesen über in einem anderen Beitrag abfragt, ich dachte, dass ich dies auch erwähnen würde -

Auch wenn Sie nicht eindeutige Werte in Schlüssel1 verfügen, Sie jede Art von Abfrage/Suche dramatisch beschleunigen könnte durch die Verwendung:

Dictionary<string, List<KeyValuePair<string,string>>> 

Dann anstelle ein einziges KeyValuePair speichern, könnten Sie die Liste von ihnen über den Schlüssel in den ersten e nachschlagen lement. Dies wäre viel, viel schneller, wenn Sie alle Elemente mit einem gegebenen ersten Schlüssel finden müssten ...

+0

Ich mag die Wörterbuch-Version - Ich habe auch so etwas (als eine Art Gruppe nach Ansatz) - Ich werde wahrscheinlich dieses Wörterbuch viele Male auf dieser Zeichenfolge, die jetzt Schlüssel – JohnIdol

+0

Ich habe das getan viele Male und hatte sehr wenige Probleme. –

10

Dies setzt voraus, dass Sie sequenziell auf die Liste zugreifen, wie Sie sagen, iterieren. Potenziell könnten andere Datenstrukturen schneller zum Suchen sein.

+0

schlicht und einfach- Ich mag es - würde das besser als das, was ich auf key1 Abfrage? – JohnIdol

+0

Wenn Schlüssel1 eindeutig ist, könnten Sie SortedList berücksichtigen, andernfalls könnten Sie Ihre Liste <> basierend auf MrStruct.Key1 für die Leistung sortieren. – user7116

+0

Welche Art von Abfrage machst du? Wenn der Schlüssel1 eindeutig ist, wäre die Verwendung eines Wörterbuchs viel, viel schneller ... –

Verwandte Themen