Jak mogę filtrować słownik za pomocą LINQ i zwracać go do słownika tego samego typu


87

Mam następujący słownik:

Dictionary<int,string> dic = new Dictionary<int,string>();
dic[1] = "A";
dic[2] = "B";

Chcę przefiltrować pozycje słownika i ponownie przypisać wynik do tej samej zmiennej:

dic = dic.Where (p => p.Key == 1);

Jak mogę zwrócić wynik jako słownik z tego samego typu [ <int,string>]?

Próbowałem ToDictionary, ale to nie działa.

Z góry dziękuję.


11
W przyszłości, jeśli wypróbowałeś oczywiste podejście, ale okazało się, że nie działa, prześlij kod, który wypróbowałeś.
Jon Skeet

Odpowiedzi:


193

ToDictionaryjest droga do zrobienia. To czyni pracę - jesteś po prostu używając go nieprawidłowo, prawdopodobnie. Spróbuj tego:

dic = dic.Where(p => p.Key == 1)
         .ToDictionary(p => p.Key, p => p.Value);

Powiedziawszy to, zakładam, że naprawdę chcesz innego Wherefiltra, ponieważ twój obecny zawsze znajdzie tylko jeden klucz ...

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.