Как я могу отфильтровать словарь с помощью LINQ и вернуть его в словарь того же типа - PullRequest
71 голосов
/ 21 октября 2010

У меня есть следующий словарь:

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

Я хочу отфильтровать элементы словаря и переназначить результат той же переменной:

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

Как я могу вернуть результат каксловарь того же типа [<int,string>]?

Я пробовал ToDictionary, но он не работает.

Заранее спасибо.

1 Ответ

160 голосов
/ 21 октября 2010

ToDictionary это путь. Он работает - вы просто использовали его неправильно, предположительно. Попробуйте это:

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

Сказав это, я предполагаю, что вы действительно хотите другой Where фильтр, поскольку ваш текущий когда-нибудь найдет только один ключ ...

...