2010-10-21 14 views
60

Ho il seguente dizionario:Come posso filtrare un dizionario utilizzando LINQ e restituirlo a un dizionario dallo stesso tipo

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

voglio filtrare gli elementi del dizionario e riassegnare il risultato alla stessa variabile:

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

come posso restituire il risultato come un dizionario dallo stesso tipo [<int,string>]?

Ho provato ToDictionary, ma non funziona.

Grazie in anticipo.

+7

In futuro, se hai provato l'approccio ovvio, ma ha trovato che non funziona, per favore pubblica il codice che hai provato. –

risposta

127

ToDictionary è la strada da percorrere. E 'fa lavoro - lo stavi solo usando in modo errato, presumibilmente. Prova questo:

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

Detto questo, si presumo davvero vogliono una diversa Where filtri, come quella attuale sarà sempre e solo trovare una chiave ...

+0

Grazie, Jon. Hai ragione, lo stavo usando in modo errato. – Homam

Problemi correlati