Как я могу извлечь подмножество словаря в другое в С#? - программирование
Подтвердить что ты не робот

Как я могу извлечь подмножество словаря в другое в С#?

Я хочу отфильтровать некоторые пары словарей, которые мне не нужны для дальнейшей обработки. Проверьте этот код:

static void Main(string[] args)
{
    var source = new Dictionary<string, dynamic>();

    source.Add("number", 1);
    source.Add("string1", "One");
    source.Add("string2", "Two");
    source.Add("string3", "Three");

    var onlyStrings = source.Where(s => s.Key != "number").ToDictionary(s => s.Key);
}

В этом случае onlyStrings является Dictionary<string, KeyValuePair<string, object>>

но я хочу, чтобы толькоStrings имели следующие пары (подмножество исходного словаря):

  • Ключ: "строка1", значение: "один"
  • Ключ: "строка2", значение: "Два"
  • Ключ: "string3", значение: "Три"

Каков наилучший способ получить такой результат?

4b9b3361

Ответ 1

Существует перегрузка метода ToDictionary, который также позволяет делегату elementSelector:

var onlyStrings = source.Where(s => s.Key != "number")
                        .ToDictionary(dict => dict.Key, dict => dict.Value);