Jeśli nie dbają o tworzenie nowego słownika z żądanych przedmiotów i wyrzucać starego, po prostu spróbuj:
dic = dic.Where(i => i.Value.BooleanProperty)
.ToDictionary(i => i.Key, i => i.Value);
Jeśli nie można utworzyć nowy słownik i trzeba zmienić stary z jakiegoś powodu (np gdy jest zewnętrznie odwołuje i nie można zaktualizować wszystkie nazwy:.
foreach (var item in dic.Where(item => !item.Value.BooleanProperty).ToList())
dic.Remove(item.Key);
Zauważ, że ToList
jest konieczne tutaj ponieważ jesteś modyfikując zbiór podstawowych Jeżeli zmienisz kolekcji podstawowej, moduł wyliczający pracuje to zapytanie o wartości będzie nieużyteczne i wygeneruje wyjątek w kolejnej iteracji pętli. ToList
buforuje wartości przed zmianą słownika.
LINQ czyni życie tak proste! :) – SirDemon