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

87

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

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

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

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

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

Я пробовал ToDictionary, но не получается.

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

Хомам
источник
11
В будущем, если вы пробовали очевидный подход, но обнаружили, что он не работает, опубликуйте, пожалуйста, код, который вы пробовали.
Джон Скит,

Ответы:

193

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

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

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

Джон Скит
источник