2010-10-21 14 views
60

J'ai le dictionnaire suivant:Comment puis-je filtrer un dictionnaire en utilisant LINQ et le retourner à un dictionnaire du même type

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

Je veux filtrer les articles du dictionnaire et réassigner le résultat à la même variable:

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

Comment puis-je retourner le résultat comme un dictionnaire du même type [<int,string>]? J'ai essayé ToDictionary, mais cela ne fonctionne pas.

Merci d'avance.

+7

À l'avenir, si vous avez essayé l'approche évidente, mais a trouvé que cela ne fonctionne pas, s'il vous plaît poster le code que vous avez essayé. –

Répondre

127

ToDictionary est le chemin à parcourir. Il ne fonctionne - vous utilisiez juste incorrectement, vraisemblablement. Essayez ceci:

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

Cela dit, je suppose que vous vraiment veulent un filtre Where différent, comme on ne pourra jamais trouver une clé en cours ...

+0

Merci, Jon. Vous avez raison, je l'utilisais incorrectement. – Homam