Как я могу отфильтровать словарь с помощью LINQ и вернуть его в словарь того же типа

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

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

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

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

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

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

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


person Homam    schedule 21.10.2010    source источник
comment
В будущем, если вы попробовали очевидный подход, но обнаружили, что он не работает, опубликуйте код, который вы пробовали.   -  person Jon Skeet    schedule 21.10.2010


Ответы (1)


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

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

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

person Jon Skeet    schedule 21.10.2010