C # में स्ट्रिंग के लिए एक सूची में परिवर्तित करें


184

मैं एक सूची को C # में स्ट्रिंग में कैसे बदलूं?

जब मैं toStringएक सूची ऑब्जेक्ट पर अमल करता हूं, मुझे मिलता है:

System.Collections.Generic.List`1 [System.String]


1
एक सूची एक संग्रह है, इस स्ट्रिंग को क्या देखना चाहिए?
मार्को

आप यहां बताए गए तीन तरीकों में से किसी को भी आजमा सकते हैं
RBT

जवाबों:


363

शायद आप करने की कोशिश कर रहे हैं

string combindedString = string.Join( ",", myList.ToArray() );

आप सूची में तत्वों को विभाजित करने के लिए "," के साथ क्या बदल सकते हैं।

संपादित करें : जैसा कि आप भी कर सकते हैं टिप्पणियों में उल्लेख किया गया है

string combindedString = string.Join( ",", myList);

संदर्भ:

Join<T>(String, IEnumerable<T>) 
Concatenates the members of a collection, using the specified separator between each member.

4
क्या आपका मतलब है कंघी करने वाला स्ट्रिंग = स्ट्रिंग। जॉइन (",", myList.ToArray ());
आटे

2
तर्क '2': 'System.Collections.Generic.List <string>' से 'string []'
Ash

9
मैंने हाल ही में इसका इस्तेमाल किया, यह काम करता है - बस .ToArray ()
एड्रियन

3
@AdrianK आप सही हैं क्योंकि .Net 4.0 ने किसी भी IEnumerable <string> में पास होने की क्षमता जोड़ी है। हालांकि 4.0 अप्रैल 2010 में जारी किया गया था, इससे पहले कि यह सवाल और जवाब पोस्ट किया गया था, शायद यहां के लोगों को अभी तक इसके बारे में पता नहीं था (नीचे कुछ नीचे के अलावा)
एंड्रयू स्टिट्ज

Vb.net के लिए, डिम कंघी के रूप में कंघी किया हुआ स्ट्रिंग = स्ट्रिंग। (",", myList.ToArray ())
PartTimeNerd

55

मैं अपनी आंत की भावना के साथ जाने वाला हूं और आपको लगता है कि आप ToStringसूची के प्रत्येक तत्व पर कॉल करने का परिणाम समझना चाहते हैं ।

var result = string.Join(",", list.ToArray());

16

आप उपयोग कर सकते हैं string.Join:

List<string> list = new List<string>()
{
    "Red",
    "Blue",
    "Green"
};

string output = string.Join(Environment.NewLine, list.ToArray());    
Console.Write(output);

परिणाम होगा:

Red    
Blue    
Green

इसके विकल्प के रूप में Environment.NewLine, आप इसे अपने चयन के स्ट्रिंग आधारित लाइन-सेपरेटर के साथ बदल सकते हैं।


14

यदि आप एक साधारण जुड़ाव से कुछ अधिक जटिल चाहते हैं तो आप LINQ जैसे का उपयोग कर सकते हैं

var result = myList.Aggregate((total, part) => total + "(" + part.ToLower() + ")");

ले जाएगा ["ए", "बी", "सी"] और उत्पादन "(ए) (बी) (सी)"


1
खाली संग्रह के लिए InvalidOperationException को फेंकने से बचने के लिए पहले पैरामीटर के रूप में एक बीज के साथ एकत्र करें।
22

13

String.Join(" ", myList)या String.Join(" ", myList.ToArray())। पहला तर्क सब्सट्रिंग्स के बीच विभाजक है।

var myList = new List<String> { "foo","bar","baz"};
Console.WriteLine(String.Join("-", myList)); // prints "foo-bar-baz"

.NET के आपके संस्करण के आधार पर आपको पहले सूची में ToArray () का उपयोग करने की आवश्यकता हो सकती है।


9

आपके पास एक है List<string>- इसलिए यदि आप चाहते हैं कि उन्हें संक्षिप्त किया जाए, तो कुछ पसंद है

string s = string.Join("", list);

काम करेगा (.NET 4.0 में कम से कम)। पहला पैरामीटर सीमांकक है। इसलिए आप अल्पविराम आदि भी कर सकते थे।

आप एक सूची बनाने के बजाय, स्ट्रींगबर्ल का उपयोग करना चाह सकते हैं।


8

.ToString()संदर्भ प्रकार के लिए विधि आमतौर पर करने के लिए वापस निराकरण System.Object.ToString()जब तक आप एक व्युत्पन्न प्रकार ओवरराइड (संभवतः निर्मित प्रकार के लिए विस्तार तरीकों का उपयोग कर)। इस पद्धति के लिए डिफ़ॉल्ट व्यवहार उस प्रकार के नाम को आउटपुट करना है जिस पर इसे कहा जाता है। तो आप जो देख रहे हैं वह अपेक्षित व्यवहार है।

आप string.Join(", ", myList.ToArray());इसे हासिल करने के लिए कुछ करना चाह सकते हैं। यह एक अतिरिक्त कदम है, लेकिन इसे System.Collections.Generic.List<T>थोड़ा आसान बनाने के लिए इसे एक विस्तार पद्धति में रखा जा सकता है। कुछ इस तरह:

public static class GenericListExtensions
{
    public static string ToString<T>(this IList<T> list)
    {
        return string.Join(", ", list);
    }
}

(ध्यान दें कि यह फ्री-हैंड और अनटाइटेड कोड है। मेरे पास फिलहाल कोई कंपाइलर काम नहीं है। इसलिए आप इसे थोड़ा प्रयोग करना चाहेंगे।)


यह काम करता है जब मैं इसे ToString नहीं कहता या सामान्य पैरामीटर के साथ निष्पादित करता हूं। लेकिन मुझे विस्तार विधि का उपयोग करने का आपका विचार पसंद है :)
IAdapter

4

यह बताना मुश्किल है, लेकिन शायद आप कुछ ऐसा ढूंढ रहे हैं:

var myString = String.Join(String.Empty, myList.ToArray());

यह सूची में प्रत्येक आइटम पर ToString () विधि को स्पष्ट रूप से कॉल करेगा और उन्हें संक्षिप्त करेगा।


1
String.Concat()उसी चीज को बेहतर तरीके से हासिल करेंगे।
जेफ मर्काडो


2

यदि आप किसी सूची में आइटम को एक बड़े लंबे स्ट्रिंग में बदलना चाहते हैं, तो यह करें String.Join("", myList):। फ्रेमवर्क के कुछ पुराने संस्करण आपको IEnumerable को दूसरे पैरामीटर के रूप में पारित करने की अनुमति नहीं देते हैं, इसलिए आपको कॉल करके अपनी सूची को सरणी में बदलने की आवश्यकता हो सकती है .ToArray ()।


2

आपके प्रश्न का सीधा उत्तर String.Joinवैसा ही है जैसा दूसरों ने उल्लेख किया है।

हालांकि, अगर आपको कुछ जोड़तोड़ की जरूरत है, तो आप उपयोग कर सकते हैं Aggregate:

List<string> employees = new List<string>();
employees.Add("e1");
employees.Add("e2");
employees.Add("e3");

string employeesString = "'" + employees.Aggregate((x, y) => x + "','" + y) + "'";
Console.WriteLine(employeesString);
Console.ReadLine();

1
उत्पादन कोड में सुनिश्चित करें कि आपकी सूची में कोई तत्व है अन्यथा यह अपवाद फेंक देगा।
AZ_

1

पाठ फ़ाइल से डेटा पुनर्प्राप्त करने और इसे ऐरे में संग्रहीत करने की कोशिश करने पर इस पद्धति ने मेरी मदद की, फिर इसे एक स्ट्रिंग उपलब्ध करने के लिए असाइन करें।

string[] lines = File.ReadAllLines(Environment.CurrentDirectory + "\\Notes.txt");  
string marRes = string.Join(Environment.NewLine, lines.ToArray());

उम्मीद है कि किसी की मदद कर सकते हैं !!!!


0

यह मेरे लिए काम करने लगता है।

var combindedString = new string(list.ToArray());

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.