2009-08-10 7 views
3

Ich habe ein Dictionary, dass für die meisten Operationen Ich muss nur einen einzelnen Eintrag durch Schlüssel abrufen, aber für ein paar Operationen Ich muss mit den Einträgen mit einer Reihe von assoziierten arbeiten Schlüssel. Der Weg, der mir dabei einfällt, ist die Verwendung von GetKeys und FindAll, die dem Bereich entsprechen, an dem ich interessiert bin, aber ich frage mich, ob jemand eine bessere Methode vorschlagen könnte.Effiziente Weise eine Reihe von Keys von Wörterbuch bekommen

Antwort

4

A Dictionary die als Hash-Tabelle implementiert ist, ist nicht besonders geeignet, um effizient Bereichsauswahloperationen auf Tasten durchzuführen. Sie müssen alle Schlüssel aufsuchen, um alle in einem bestimmten Bereich zu finden. Ein guter Weg, dies zu erreichen, besteht darin, seine Sammlung von Schlüsseln mit einem einfachen LINQ-Ausdruck abzufragen.

1

Wie Sie sagten, ein Fund würde alle funktionieren. Vielleicht etwas wie;

dictionary.FindAll(entry => multipleStrings.Contains(entry.Key)); 
3

A SortedList oder SortedDictionary würden die Elemente sortiert, so können Sie versuchen, den Schlüssel an der Unterseite des Bereichs erhalten dann die Elemente an die Spitze des Bereichs durchqueren.

Binäre Suche auf einem SortedList werden Sie den Index des Schlüssels geben Sie die Unterseite des Bereichs oder der nächsthöheren Wert entspricht. Siehe How to perform a binary search on IList<T>?

Verwandte Themen