2010-11-11 11 views
41

में एक HashSet लिए एक सरणी में कनवर्ट करें मैं कैसे एक हैश सेट करने के लिए एक सरणी में परिवर्तित? नेट

string[] BlockedList = BlockList.Split(new char[] { ';' },  
StringSplitOptions.RemoveEmptyEntries); 

मुझे इस सूची को hashset पर परिवर्तित करने की आवश्यकता है।

+0

यह किस प्रकार की सूची/सरणी है? इसमें क्या शामिल है? – Bernard

+0

यह कॉलिंग Blocklist * बहुत * भ्रामक है। मैं BlockNames सुझाव देना चाहेंगे। [कैसे HashSet या HashedSet को LINQ परिणाम कन्वर्ट करने के लिए] की –

+0

संभव डुप्लिकेट (http://stackoverflow.com/questions/3471899/how-to-convert-linq-results-to-hashset-or-hashedset) – nawfal

उत्तर

76

आप यह निर्दिष्ट नहीं BlockedList है कि किस प्रकार, इसलिए मैं यह कुछ है कि IList से निकला है (यदि String कहने के लिए जहां BlockList लिखा था तो यह एक स्ट्रिंग सरणी जो IList से निकला होगा मतलब है) ग्रहण करेगा।

HashSet एक निर्माता है कि एक IEnumerable लेता है, तो आप केवल इस निर्माता में सूची पारित की जरूरत है, के रूप में IListIEnumerable से निकला है।

var set = new HashSet(BlockedList); 
+3

'कॉलिंग स्प्लिट 'चार सरणी और' की एक पैरामीटर के साथ इस रहस्य का प्रकार, पर StringSplitOptions' थोड़े इंगित करता है कि BlockedList एक श्रृंखला है। – Jamiec

+0

के रूप में मैं मान्यताओं बनाने, '.Split' विधि और' StringSplitOptions' को देख नफरत के रूप में ज्यादा है, मैं 'ग्रहण करने के लिए स्ट्रिंग' सरणी होगा। – IAbstract

12

मैं Blocklist संभालने कर रहा हूँ एक स्ट्रिंग (इसलिए कॉल विभाजित करने के लिए) जो एक स्ट्रिंग सरणी देता है।

बस constructor of the HashSet को सरणी (जो IEnumerable लागू करता है) पास:

var hashSet = new HashSet<string>(BlockedList); 
7

यहाँ एक विस्तार विधि है कि किसी भी IEnumerable से एक HashSet उत्पन्न होगा है:

public static HashSet<T> ToHashSet<T>(this IEnumerable<T> source) 
{ 
    return new HashSet<T>(source); 
} 

के साथ उपयोग करने के लिए अपने उपरोक्त उदाहरण:

var hashSet = BlockedList.ToHashSet(); 
2

Extensio पर नए कीवर्ड छूटी n उदाहरण ....

public static HashSet<T> ToHashSet<T>(this IEnumerable<T> source) 
    { 
     return new HashSet<T>(source); 
    } 
0

एक कदम आगे ले करने के लिए निम्न एक लाइनर दर्शाता है कि कैसे तुम इतनी है कि आप एक मध्यवर्ती चर को परिभाषित करने की जरूरत नहीं एक HashSet करने के लिए एक शाब्दिक स्ट्रिंग सरणी में बदल सकते हैं, SomethingList

var directions = new HashSet<string>(new [] {"east", "west", "north", "south"});