2013-06-20 6 views
16

मैं कुछ शब्दकोश जोड़े को फ़िल्टर करना चाहता हूं जिन्हें मुझे आगे की प्रक्रिया की आवश्यकता नहीं है। इस नमूना कोड की जाँच करें:मैं सी # में किसी अन्य शब्दकोष का सबसेट कैसे निकाल सकता हूं?

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 निम्नलिखित जोड़े (स्रोत शब्दकोश के एक सबसेट) करना चाहते हैं:

  • कुंजी : "string1", मान: "एक"
  • कुंजी: "string2", मान: "दो"
  • कुंजी: "string3", मान: "तीन"

ऐसे परिणाम प्राप्त करने का सबसे अच्छा तरीका क्या है?

उत्तर

25

ToDictionary विधि है कि यह भी एक elementSelector प्रतिनिधि के लिए अनुमति देता है के लिए एक अधिभार नहीं है:

var onlyStrings = source.Where(s => s.Key != "number") 
         .ToDictionary(dict => dict.Key, dict => dict.Value); 
संबंधित मुद्दे

 संबंधित मुद्दे