web-dev-qa-db-fra.com

Comment puis-je filtrer un dictionnaire à l'aide de LINQ et le renvoyer à un dictionnaire du même type

J'ai le dictionnaire suivant:

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

Je souhaite filtrer les éléments du dictionnaire et réaffecter le résultat à la même variable:

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

Comment puis-je renvoyer le résultat sous forme de dictionnaire du même type [<int,string>]?

J'ai essayé ToDictionary, mais cela ne fonctionne pas.

Merci d'avance.

73
Homam

ToDictionary est la voie à suivre. Cela fonctionne fonctionne - vous l'utilisiez simplement incorrectement, probablement. Essaye ça:

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

Cela dit, je suppose que vous vraiment voulez un filtre Where différent, car votre filtre actuel ne trouvera qu'une seule clé ...

162
Jon Skeet