2010-12-23 18 views
14

मुझे List<int> को string सरणी में परिवर्तित करने का एक आसान तरीका चाहिए।स्ट्रिंग [] के लिए सूची <int> कैसे परिवर्तित करें?

मेरे पास है:

var the_list = new List<int>(); 
the_list.Add(1); 
the_list.Add(2); 
the_list.Add(3); 

string[] the_array = new string[the_list.Count]; 
for(var i = 0 ; i < the_array.Count; ++i) 
    the_array[i] = the_list[i].ToString(); 

... जो दिखता है मेरे लिए बहुत बदसूरत होने के लिए।

क्या कोई आसान तरीका है?


नोट: मैं एक आसान रास्ता तलाश कर रहा हूँ - जरूरी नहीं कि एक तेज़ तरीका।

+0

ऐसा लगता है कि आप दो अलग-अलग प्रश्न पूछ रहे हैं: अधिक कुशल और कौन सा आसान है। आईएमओ, इन दो सवालों के जवाब अलग हैं :) –

+0

@ ब्रायन: मैं पूछ रहा हूं कि कौन सा आसान है - भ्रम के लिए खेद है। –

+0

यह सबसे प्रभावी तरीका है, जब तक कि आप सरणी में कई बार दोहराए गए तत्व न हों। इसका मतलब यह नहीं है कि यह निश्चित रूप से सबसे आसान तरीका है। –

उत्तर

44

उपयोग LINQ:

string[] the_array = the_list.Select(i => i.ToString()).ToArray(); 
+0

वह तेज़ था! धन्यवाद। –

+6

तेज प्रतिक्रिया हाँ, लेकिन कोड दुर्भाग्य से तेज़ नहीं है। –

+0

नोट: हालांकि मैं निश्चित रूप से यहां चुने गए Select.ToArray दृष्टिकोण का चयन करता हूं, यह आपके पास पहले से कहीं अधिक तेज़ होने की संभावना नहीं है। आपका रास्ता सीधे आगे और शायद सबसे प्रभावी तरीका है। फिर। मैं Select.ToArray (LINQ) के आसान-पढ़ने/बनाए रखने के दृष्टिकोण का चयन करता हूं कि @Etienne de Martel सुझाता है, लेकिन आपके प्रश्न का सुझाव है कि आपका विकल्प अक्षम था। –

4

क्षमा करें, मैं इस मशीन पर स्थापित नेट नहीं किया है, इसलिए पूरी तरह से अपरीक्षित:

var theList = new List<int>() { 1, 2, 3 }; 

var theArray = theList.Select(e => e.ToString()).ToArray();  // Lambda Form 
var theArray = (from e in theList select e.ToString()).ToArray(); // Query Form 
2

सूची एक toArray() विधि है। यह आपको टाइपिंग को बचाएगा लेकिन शायद अधिक कुशल नहीं होगा।

+3

यह सरणी को 'int' से' string' में भी परिवर्तित नहीं करेगा। –

4

मुझे पता है कि आपके पास एक अच्छा जवाब है, लेकिन आपको LINQ या Select की आवश्यकता नहीं है। आप इसे ConvertAll और अज्ञात विधि से कर सकते हैं। इस तरह:

var list = new List<int>(); 
.... 
var array = list.ConvertAll(x => x.ToString()).ToArray(); 

इसी तरह का विचार, लेकिन मुझे लगता है कि यह linq नहीं है। मामले में मामले में।

+1

इसके लायक होने के लिए, 'ToArray'' संख्यात्मक 'वर्ग पर एक स्थिर विधि है, जो इसे मेरी राय में LINQ बनाता है। साथ ही, यह एक अच्छा मौका है कि 'चयन' का उपयोग करने से यह कम कुशल होगा: 'कनवर्टअल' आपके द्वारा एक सूची में कनवर्ट करने से पहले एक मध्यवर्ती सूची बनाएगा; 'चयन करें' को उस मध्यवर्ती सूची को बनाने की आवश्यकता नहीं है। – LukeH

0

क्योंकि आपकी सूची में केवल एक संख्या है, आप आसानी से उन्हें एक स्ट्रिंग में परिवर्तित कर सकते हैं। बस एक लूप बनाएं और अपने सदस्यों को स्ट्रिंग में कनवर्ट करें।

string[] the_array = new string[the_list.Count]; 
int i=0; 
foreach(var item in the_list) 
{ 
    the_array[i] = item.ToString(); 
    i++; 
} 
+0

कृपया अपने उत्तर में कुछ स्पष्टीकरण जोड़ें। बस कोड पोस्ट करना भ्रमित हो सकता है। –

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