2013-01-03 9 views

Antwort

28

Nun ist es maßen einfach mit LINQ:

var matches = dict.Where(pair => pair.Value == "abc") 
        .Select(pair => pair.Key); 

Beachten Sie, dass dies nicht einmal etwas effizienter sein wird - es ist ein O(N) Betrieb, da es jeden Eintrag überprüfen muss.

Wenn Sie dies häufig tun müssen, sollten Sie eine andere Datenstruktur in Betracht ziehen - Dictionary<,> ist speziell für schnelle Suchvorgänge von Schlüssel.

+0

mit Sie könnten, wenn Sie die Schlüssel bekommen, die einen Wert haben, der „abc“ Sie könnten auch enthält: var Streichhölzer = dict. Wobei (pair => pair.Value.Contains ("abc")) .Wählen Sie (pair => pair.Key); – jmrnet

+0

@User: 'Dictionary <,>' ist nur eine Abkürzung für 'Dictionary '. Wie groß ist dein Wörterbuch? Wie viele Werte müssen Sie suchen? Einmal pro Sekunde ist nicht sehr oft, wenn es ein ziemlich kleines Wörterbuch ist und Sie nur nach einem einzigen Wert suchen ... –

+0

Die Kapazität des Wörterbuchs ist 10 Tasten und 4 Werte ("Links", "Rechts", "Front") ,"Zurück"). Und manchmal läuft die Funktion etwa 10 Mal pro Sekunde. – Elmo

0

Eingebaute Funktion? Nein sorry ... aber eine andere (nicht so schön) Weg iterieren foreach(KeyValuePair<integer, string> ...

Verwandte Themen