2013-06-20 10 views
16

私はそれ以上の処理の必要がないいくつかの辞書ペアを除外したい。このサンプルコードをチェックアウト:辞書のサブセットをC#の別のサブセットに抽出するにはどうすればよいですか?

この場合
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>>

ですが、私はonlyStringsには、次のペア(ソース辞書のサブセット)を持つようにしたい:

  • キー: "文字列1"、バリュー: "ワン"
  • キー: "文字列2"、バリュー: "二"
  • キー: "はstring3"、バリュー: "三"

このような結果を得る最も良い方法は何ですか?

答えて

25

もelementSelector委譲することができますToDictionaryメソッドのオーバーロードがあります:

var onlyStrings = source.Where(s => s.Key != "number") 
         .ToDictionary(dict => dict.Key, dict => dict.Value); 
関連する問題