如何在C#中将字典的子集提取到另一个字典?

时间:2013-06-20 01:45:33

标签: c# c#-4.0

我想过滤掉一些我不需要进一步处理的字典对。检查此示例代码:

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>>

但我希望只有字符串具有以下对(源字典的子集):

  • 键:“string1”,值:“一个”
  • 键:“string2”,值:“两个”
  • 键:“string3”,值:“三”

获得此类结果的最佳方式是什么?

1 个答案:

答案 0 :(得分:26)

ToDictionary方法有一个重载,它也允许使用elementSelector委托:

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