2008-11-30 23 views
15

मेरे पास ICollection<string> प्रकार का ऑब्जेक्ट है। string[] में कनवर्ट करने का सबसे अच्छा तरीका क्या है।आईसीओलेक्शन <string> स्ट्रिंग []

यह .NET 2 में कैसे किया जा सकता है?
सी # 3 के बाद के संस्करण में शायद यह क्लीनर कैसे किया जा सकता है, शायद LINQ में C# 3 का उपयोग कर?

string[] array = new string[collection.Count]; 
collection.CopyTo(array, 0); 

यही काम :)

उत्तर

29

आप इसे एक साधारण सरणी में बदलने के लिए निम्नलिखित स्निपेट इस्तेमाल कर सकते हैं

String[] GetArray(ICollection<String> mycoll) 
{ 
    return mycoll.ToArray<String>(); 
} 

संपादित करें: नेट 2.0 के साथ आप सरणी एक अतिरिक्त List<String> के साथ वापसी कर सकते हैं:

+०१२३५१६४१०६१
String[] GetArray(ICollection<String> mycoll) 
{ 
    List<String> result = new List<String>(mycoll); 
    return result.ToArray(); 
} 
+0

क्या मुझे सरणी को सही आकार के साथ शुरू करने की आवश्यकता है .. मैं यह नहीं कर सकता: स्ट्रिंग [] वायदा = नई स्ट्रिंग [] {}; FutureFVDictionary.Keys.CopyTo (वायदा, 0); ; – leora

+1

सरणी को पहले सही आकार में प्रारंभ किया जाना चाहिए - अन्यथा CopyTo एक ArgumentException के साथ विफल हो जाएगा। – AdrianoKF

+0

सूची (माइकॉल) के साथ। टोएरे() आपको आकार के बारे में चिंता करने की ज़रूरत नहीं है। – gimel

5

ICollection<String> की (तुच्छ) मामले में क्या करना चाहिए, का उपयोग toArray:

+0

कंपाइलर प्रकार तर्क का अनुमान लगा सकता है, इसलिए भाग की आवश्यकता के बिना mycoll.ToArray() ठीक होगा। –

+0

सूची .ToArray विधि एक सरणी प्रति का उपयोग करती है, इसलिए सरणी प्रतिलिपि करना सीधे सूची बनाने से बेहतर विकल्प होगा, जो एक और वस्तु है। –

+1

सूची (माइकोल)। टोएरे() सरणी निर्माण और विवरण की प्रतिलिपि बनाते हैं। – gimel

8

आप सी # 3.0 और .NET Framework 3.5 का उपयोग कर रहे हैं, तो आप ऐसा करने में सक्षम होना चाहिए:

ICollection<string> col = new List<string>() { "a","b"}; 
string[] colArr = col.ToArray(); 
निश्चित रूप से

, तो आप चाहिए है "System.Linq का उपयोग कर," फ़ाइल के शीर्ष पर

+0

इसके अलावा सूची , .NET 2.0 के बाद से एक toArray विधि है, इसलिए यदि आप सूची उपयोग कर रहे हैं आप System.Linq –

+4

की जरूरत नहीं है वह ICollection CVertex

+1

के लिए कहा यह मेरी राय में सबसे अच्छा जवाब है – reggaeguitar

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