2011-12-21 10 views
61

पर कनवर्ट करें List<string> को कॉमा से अलग string में सी # में परिवर्तित करने का कोई तेज़ तरीका है?'सूची <string>' को अल्पविराम से अलग स्ट्रिंग

मुझे ऐसा लगता है लेकिन शायद एक तेज या अधिक प्रभावी तरीका है?

List<string> ls = new List<string>(); 
ls.Add("one"); 
ls.Add("two"); 
string type = string.Join(",", ls.ToArray()); 

पुनश्च: इस साइट पर खोजे गए लेकिन सबसे समाधान जावा या पायथन

+2

नहीं, आप इसे सही कर रहे हैं। हालांकि मुझे नहीं लगता कि आपको 'ToArray() 'करने की आवश्यकता है। – Yuck

+2

लिखने के लिए तेज़ या निष्पादित करने के लिए तेज़? –

+0

दोनों :), लेकिन स्पष्ट रूप से यह संभव नहीं है – Ozkan

उत्तर

98

.NET 4 में आप ToArray() कॉल जरूरत नहीं है।

.NET 4 से पहले इसे करने के संभावित और अधिक प्रभावी तरीके हैं, लेकिन क्या आपको वास्तव में उनकी आवश्यकता है? क्या यह वास्तव में आपके कोड में एक बाधा है?

आप सूची पर पुनरावृति, अंतिम आकार बाहर काम कर सकता था, बिल्कुल सही आकार के लिए आवंटित एक StringBuilder, तो अपने आप को शामिल होते हैं। इससे कम कारण के लिए अतिरिक्त सरणी बनाई जा सकती है - लेकिन यह अधिक समय नहीं बचाएगा और यह बहुत अधिक कोड होगा।

+12

का उपयोग नहीं करता लेकिन डेवलपर्स को एलओसी में भुगतान मिलता है, है ना? .... सही? – Yuck

+11

स्ट्रिंग।शामिल हों (",", myList) – Mahesh

0

तरह से मैं अगर मैं अपने कोड को बनाए रखने गया था देखना पसंद करेंगे है कि के लिए कर रहे हैं। यदि आप एक तेज़ समाधान ढूंढने में कामयाब होते हैं, तो यह बहुत गूढ़ होगा, और आपको इसे एक विधि के अंदर वास्तव में दफन करना चाहिए जो वर्णन करता है कि यह क्या करता है।

(क्या यह अभी भी ToArray के बिना काम करता है)? IEnumerable<T> या सिर्फ IEnumerable<string> स्वीकार करने के लिए string.Join is overloaded -

+1

मैं 'स्ट्रिंग' के 'ऐरे' पर केवल 'string.Join' कर सकता हूं। तो यह जरूरी है (क्योंकि मैं '.NET 4' – Ozkan

13

निम्नलिखित परिणामस्वरूप अल्पविराम से अलग सूची होगी। के लिए System.Linq

List<string> ls = new List<string>(); 
ls.Add("one"); 
ls.Add("two"); 
string type = ls.Aggregate((x,y) => x + "," + y); 

एक कथन का उपयोग शामिल करने के लिए एक निकलेगा सुनिश्चित करें, दो

आप अल्पविराम के बाद एक जगह की जरूरत है, बस string type = ls.Aggregate((x,y) => x + ", " + y);

+0

क्या मैंने लिखा कोड से अधिक तेज़ निष्पादन का समय है? – Ozkan

+0

@ ओज़कन कृपया इसका परीक्षण करें, और हमें बताएं। –

+0

असल में, मैंने चेक नहीं किया था। सूची में केवल दो आइटमों के साथ, नहीं, वे उतने ही तेज़ हैं, लेकिन इसे 100,000 आइटमों में विस्फोट कर रहे हैं, कुल मिलाकर वास्तव में स्ट्रिंग से बहुत धीमी है। जॉइन। मुझे पता है अच्छा लगता है। मैंने अतीत में कुल पसंद किया है, लेकिन मुझे लगता है कि मैं स्ट्रिंग पर जा रहा हूं। भविष्य में शामिल हों –

3

के अंतिम पंक्ति को बदलने के लिए इस का पालन करें:

 List<string> name = new List<string>(); 

     name.Add("Latif"); 

     name.Add("Ram"); 

     name.Add("Adam"); 
     string nameOfString = (string.Join(",", name.Select(x => x.ToString()).ToArray())); 
8

जॉन स्कीट्स पर विस्तार करने के लिए .Net 4 में इसके लिए कोड का उत्तर दें:

string myCommaSeperatedString = string.Join(",",ls); 
0
static void Main(string[] args) 
{ 
    List<string> listStrings = new List<string>(){ "C#", "Asp.Net", "SQL Server", "PHP", "Angular"}; 
    string CommaSeparateString = GenerateCommaSeparateStringFromList(listStrings); 
    Console.Write(CommaSeparateString); 
    Console.ReadKey(); 
} 

private static string GenerateCommaSeparateStringFromList(List<string> listStrings) 
{ 
    return String.Join(",", listStrings); 
} 

Convert a list of string to comma separated string C#.

+0

हालांकि यह कोड प्रश्न का उत्तर दे सकता है, इस बारे में अतिरिक्त संदर्भ प्रदान करता है कि समस्या को हल करने के तरीके के बारे में अतिरिक्त संदर्भ प्रदान करने से उत्तर के दीर्घकालिक मूल्य में सुधार होगा। गुणवत्ता उत्तर प्रदान करने के लिए कृपया इसे [कैसे-जवाब दें] (http://stackoverflow.com/help/how-to-answer) पढ़ें। – thewaywewere

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