2010-07-05 14 views

उत्तर

13
var yourSet = new HashSet<TValue>(yourDictionary.Values); 

या, यदि आप चाहें, तो आप प्रकार के संदर्भ को संभालने के लिए अपनी सरल विस्तार विधि को खारिज कर सकते हैं। यह सवाल

var yourSet = yourDictionary.Values.ToHashSet(); 

// ... 

public static class EnumerableExtensions 
{ 
    public static HashSet<T> ToHashSet<T>(this IEnumerable<T> source) 
    { 
     return source.ToHashSet<T>(null); 
    } 

    public static HashSet<T> ToHashSet<T>(
     this IEnumerable<T> source, IEqualityComparer<T> comparer) 
    { 
     if (source == null) throw new ArgumentNullException("source"); 

     return new HashSet<T>(source, comparer); 
    } 
} 
+3

और जवाब मेरे लिए कोई मतलब नहीं है: तो फिर आप स्पष्ट रूप से HashSet<T> की T निर्दिष्ट करना होगा नहीं। एमएसडीएन के अनुसार, हैशसेट में डुप्लिकेट तत्व नहीं हो सकते हैं और मूल्यों के बिना संग्रह के रूप में सोचा जाना चाहिए। किसी शब्दकोष से सभी मूल्यों को लेने और उन्हें मेरे लिए हैशसेट में असाइन करने का अर्थ नहीं है। –

+0

दुर्भाग्य से, एक KeyCollection ऑब्जेक्ट हैशसेट ऑब्जेक्ट जैसा नहीं है, इसके बावजूद कि मैं कितना चाहता हूं। – Paul

+0

इस प्रश्न को ध्यान में रखते हुए 5 साल का है; मैं @ क्रिस्टोफरपेन्टर से सहमत हूं। क्या बात है? जहां तक ​​विशिष्टता का सवाल है (हालांकि इस विशेष प्रश्न का उत्तर नहीं है) क्या अधिक समझ में आता है: 'नया हैशसेट (myDictionary.Keys) '। – Heliac

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