2012-02-11 16 views
13

पूर्णांक के List<int> (उदाहरण के लिए: 1 - 3 - 4) मैं इसे इस प्रकार की स्ट्रिंग में कैसे परिवर्तित कर सकता हूं?सूची <int> को अल्पविराम से अलग मूल्यों की स्ट्रिंग के लिए

उदाहरण के लिए, उत्पादन किया जाना चाहिए:

string values = "1,3,4"; 

उत्तर

11

एक अन्य समाधान Aggregate के उपयोग होगा। यह बहुत धीमी के रूप में जाना जाता है तो अन्य प्रदान किए गए समाधान!

var ints = new List<int>{1,2,3,4}; 
var strings = 
      ints.Select(i => i.ToString(CultureInfo.InvariantCulture)) 
       .Aggregate((s1, s2) => s1 + ", " + s2); 

नीचे टिप्पणी देखें कि आपको इसका उपयोग क्यों नहीं करना चाहिए। इसके बजाय String.Join या StringBuilder का उपयोग करें।

+6

-1 इस तरह के तार बनाने के लिए कुख्यात रूप से खराब समाधान (विशेष रूप से जब सूची लंबी होती है)। स्ट्रिंग। जॉइन या स्ट्रिंगबिल्डर जाने का रास्ता हैं। स्टैक ओवरफ्लो के लिए दुखद है कि एक निम्न गुणवत्ता वाले ओपी को यह भी पता नहीं है कि सर्वश्रेष्ठ जवाब कैसे स्वीकार किया जाए। –

+5

@GertArnold मैं आपसे सहमत हूं। बस एक और समाधान दिखाना चाहता था और कुछ भी प्रदर्शन का उल्लेख करना भूल गया। मैंने इस जवाब को हटाने की कोशिश की लेकिन मैं नहीं कर सकता। मैं इसका उपयोग न करने के लिए उत्तर अपडेट कर दूंगा। –

+1

यह बहुत उदार है। डाउनवोट हटा दिया गया। –

17
var ints = new List<int>{1,3,4}; 
var stringsArray = ints.Select(i=>i.ToString()).ToArray(); 
var values = string.Join(",", stringsArray); 
+0

धन्यवाद Albin। कॉमा के साथ पूर्णांक की स्ट्रिंग से रिवर्स कार्य के लिए ई, मुझे एक सूची प्राप्त करने की आवश्यकता है। लुइगी – Ciupaz

+4

.NET 4 ['String.Join'] में (http://msdn.microsoft.com/en-us/library/dd992421.aspx) में एक ओवरलोड लोड किया गया है जो' IEnumerable 'ले रहा है, इसलिए यह बिना किया जा सकता है इंटरमीडिएट सरणी (यह ओवरलोड प्रत्येक इनपुट तत्व पर 'ToString() 'को कॉल करता है):' string.Join (",", ints) '। रिवर्स कार्य के लिए – Richard

+1

@Ciupaz, ['String.Split()'] (http://msdn.microsoft.com/en-us/library/system.string.split.aspx) का उपयोग करें। –

64
var nums = new List<int> {1, 2, 3}; 
var result = string.Join(", ", nums); 
+0

धन्यवाद मैसेम – Ciupaz

+4

ध्यान दें कि यह .NET 3.5 और पहले में काम नहीं करता है (दूसरा पैरामीटर एक स्ट्रिंग होना चाहिए [])। अल्बिन सुन्नानबो का जवाब देखें। – Itison

0
public static string ToCommaString(this List<int> list) 
{ 
    if (list.Count <= 0) 
     return (""); 
    if (list.Count == 1) 
     return (list[0].ToString()); 
    System.Text.StringBuilder sb = new System.Text.StringBuilder(list[0].ToString()); 
    for (int x = 1; x < list.Count; x++) 
     sb.Append("," + list[x].ToString()); 
    return (sb.ToString()); 
} 

public static List<int> CommaStringToIntList(this string _s) 
{ 
    string[] ss = _s.Split(','); 
    List<int> list = new List<int>(); 
    foreach (string s in ss) 
     list.Add(Int32.Parse(s)); 
    return (list); 
} 

उपयोग:

String s = "1,2,3,4"; 
List<int> list = s.CommaStringToIntList(); 
list.Add(5); 
s = list.ToCommaString(); 
s += ",6"; 
list = s.CommaStringToIntList(); 
+0

आपने इस वैकल्पिक समाधान को क्यों पोस्ट किया, जब string.Join() का उपयोग कर कुछ बहुत कॉम्पैक्ट समाधान पहले ही दिए जा चुके थे? –

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