Si vous ne se soucient pas de créer un nouveau dictionnaire avec les articles désirés et jeter l'ancien, essayez simplement:
dic = dic.Where(i => i.Value.BooleanProperty)
.ToDictionary(i => i.Key, i => i.Value);
Si vous ne pouvez pas créer un nouveau dictionnaire et la nécessité de modifier la ancien pour une raison quelconque (comme quand il est référencé à l'extérieur et vous ne pouvez pas mettre à jour toutes les références:.
foreach (var item in dic.Where(item => !item.Value.BooleanProperty).ToList())
dic.Remove(item.Key);
Notez que ToList
est nécessaire ici puisque vous modifiez la collection sous-jacente Si vous modifiez la collection sous-jacente, l'énumérateur travaillant sur il pour interroger les valeurs sera inutilisable et lèvera une exception dans l'itération de boucle suivante. ToList
met en cache les valeurs avant de modifier le dictionnaire.
LINQ rend la vie si facile! :) – SirDemon