2013-01-03 16 views

Odpowiedz

28

No to rozsądnie prosty z LINQ:

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

Należy pamiętać, że to nie będzie nawet nieco wydajny - to operacja O(N), gdyż musi sprawdzić każdą pozycję.

Jeśli chcesz zrobić to często, możesz rozważyć użycie innej struktury danych - Dictionary<,> została specjalnie zaprojektowana do szybkiego wyszukiwania według klucza.

+0

mogłeś jeśli chcesz dostać klucze, które mają wartość, która zawiera „abc” Można też: mecze var = dict. Gdzie (pair => pair.Value.Contains ("abc")) . Wybierz (para => para.Key); – jmrnet

+0

@User: 'Dictionary <,>' jest skrótem dla 'Dictionary '. Jak duży jest twój słownik? Ile wartości musisz szukać? Raz na sekundę nie jest zbyt często, jeśli jest to rozsądnie mały słownik i szukasz tylko jednej wartości ... –

+0

Pojemność słownika to 10 klawiszy i 4 wartości ("Lewy", "Prawy", "Przód" ,"Plecy"). Czasami funkcja działa około 10 razy na sekundę. – Elmo

0

Wbudowana funkcja? No przepraszam ... ale inny (nie tak piękne) sposobem jest iteracyjne użyciu foreach(KeyValuePair<integer, string> ...

Powiązane problemy