2010-09-12 9 views
6

मैं लिंक के कुल फ़ंक्शन के साथ अल्पविराम सेपरेटेड मान स्ट्रिंग बनाना चाहता हूं। क्या कोई जानता है कि इसे कैसे करना है?लिंक का कुल कार्य, सीएसवी स्ट्रिंग कैसे बनाएं

इस तरह तार की एक सरणी को देखते हुए:

var authors = new string[] {"author 1", "author 2", "author 3"}; 

मैं इस लेखक 1, लेखक 2 की तरह एक एकल स्ट्रिंग कैसे मिलता है, लेखक 3? मैं कुछ सोच रहा हूं जैसे authors.Aggregate(author => author + ",") ऐसा करने में सक्षम हो सकता है लेकिन यह सुनिश्चित नहीं है।

विचार?

+0

संभावित डुप्लिकेट http://stackoverflow.com:

string csvString = authors.Aggregate((csvSoFar, author) => csvSoFar + ", " + author); 

यह करने के लिए मोटे तौर पर बराबर है/प्रश्न/7105505/linq-aggregate-algorithm- समझाया गया) – Jamiec

उत्तर

11

आप केवल करने के लिए देख रहे हैं उन्हें अल्पविराम द्वारा अलग, बस string.Join का उपयोग करें:

string.Join(", ", authors); 

यह> किसी भी IEnumerable < स्ट्रिंग के साथ काम करेंगे (कम से कम .NET 4.0 में), लेकिन काम किया है 1.0 के बाद तारों के सरणी के साथ।

+0

ओ कूल, मुझे लगता है कि कुल मिलाकर मुझे वास्तव में आवश्यकता नहीं है। ऐसा लगता है कि जॉइन सही बात है। मैं कोशिश करूँगा ... धन्यवाद। –

+0

अच्छी कॉल - मैं उस विधि के बारे में भूल गया! – ColinE

6

जैसा कि बेनर मैककार्थी कहते हैं, आप इस उद्देश्य के लिए string.Join का उपयोग करना बंद कर देंगे। क्या तुम सच में हालांकि Enumerable.Aggregate का उपयोग करना चाहते हैं, तो इस करना चाहिए:

string csvString = authors.First(); 

foreach (string author in authors.Skip(1)) 
{ 
    csvString += ", " + author; 
} 
की [LINQ सकल एल्गोरिथ्म समझाया] (
+2

धन्यवाद, हां लगता है कि इस काम के लिए बहुत आसान तरीका है। –

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