सूची को कोमा-सेपरेटेड स्ट्रिंग में परिवर्तित करें


158

मेरा कोड नीचे दिया गया है:

public void ReadListItem()
{
     List<uint> lst = new List<uint>() { 1, 2, 3, 4, 5 };
     string str = string.Empty;
     foreach (var item in lst)
         str = str + item + ",";

     str = str.Remove(str.Length - 1);
     Console.WriteLine(str);
}

आउटपुट: 1,2,3,4,5

List<uint>अल्पविराम से अलग स्ट्रिंग में परिवर्तित करने का सबसे सरल तरीका क्या है ?


8
String.Joinआपको जो चाहिए वह यह है।
asawyer

8
var csvString = String.Join(",", lst);करना चाहिए।
मिथ्रंदिर

2
किसी को भी, जो इसे फिर से खोलना चाहता है, अगर यह बहुत अधिक स्थानीय नहीं है, तो यह डुप्लिकेट है: stackoverflow.com/questions/799446/…
टिम श्मेल्टर

जवाबों:


319

का आनंद लें!

Console.WriteLine(String.Join(",", new List<uint> { 1, 2, 3, 4, 5 }));

पहला पैरामीटर: ","
दूसरा पैरामीटर:new List<uint> { 1, 2, 3, 4, 5 })

String.Join दूसरे पैरामीटर के रूप में एक सूची लेगा और एक एकल स्ट्रिंग में पहले पैरामीटर के रूप में पारित स्ट्रिंग का उपयोग करते हुए सभी तत्वों को मिलाएगा


11
.NET 3.5 और नीचे आपको अपनी सूची को स्पष्ट रूप से सरणी में बदलना lst.ToArray()होगा, क्योंकि अभी तक वहाँ कोई प्रत्यक्ष अधिभार नहीं है।
एंटोन

69

आप आइटम गठबंधन करने के लिए String.Join विधि का उपयोग कर सकते हैं :

var str = String.Join(",", lst);

यह मेरे लिए काम नहीं करता है। यह सूची में वस्तुओं के बजाय संग्रह का नाम पैदा करता है।
रानी रेडक्लिफ

25

का उपयोग करते हुए String.Join

string.Join<string>(",", lst );

का उपयोग करते हुए Linq Aggregation

lst .Aggregate((a, x) => a + "," + x);

1
मेरे पास टाइप int32 की सूची है। जब मैं आपके द्वारा बताए गए कुल फ़ंक्शन का उपयोग करता हूं, तो यह कहता है कि "लैंबडा एक्सप्रेशन को डेलिगेट टाइप में नहीं बदल सकते हैं 'System.Func <int, int, int>' क्योंकि ब्लॉक में रिटर्न टाइप्स के कुछ निहित प्रतिनिधि टाइप करने के लिए परिवर्तनीय नहीं हैं" और "स्पष्ट रूप से टाइप 'स्ट्रिंग' को 'int' में नहीं बदल सकते
हरि

1
@ हरि को स्ट्रिंग करने के लिए सहमत करने से पहले आपको इसे स्ट्रिंग मानों में बदलना होगा। तो आप कुछ इस तरह से कर सकते हैं: सूची। चुनाव (x => string.Format ("{0}: {1}", x.Key, x.Value))। अलग ((ए, x) => ए +। , "+ x);
दांव

11

यदि आपके पास किलों का संग्रह है:

List<int> customerIds= new List<int>() { 1,2,3,3,4,5,6,7,8,9 };  

आप string.Joinएक स्ट्रिंग प्राप्त करने के लिए उपयोग कर सकते हैं :

var result = String.Join(",", customerIds);

का आनंद लें!



4
          @{  var result = string.Join(",", @user.UserRoles.Select(x => x.Role.RoleName));
              @result

           }

मैंने एमवीसी रेजर व्यू में कॉमा द्वारा अलग की गई सभी भूमिकाओं का मूल्यांकन और प्रिंट करने के लिए उपयोग किया।


3

यदि आप .NET फ्रेमवर्क> 4.0 का उपयोग कर रहे हैं, तो आप इसके लिए String.Join का उपयोग कर सकते हैं।

var result= String.Join(",", yourList);

2

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

उदाहरण:

List<string> testList= new List<string>();
testList.Add("Apple"); // Add string 1
testList.Add("Banana"); // 2
testList.Add("Mango"); // 3
testList.Add("Blue Berry"); // 4
testList.Add("Water Melon"); // 5

string JoinDataString = string.Join(",", testList.ToArray());


1

हम इस तरह की कोशिश कर सकते हैं कि अल्पविराम द्वारा अलग सूची में प्रवेश किया जाए

string stations = 
haul.Routes != null && haul.Routes.Count > 0 ?String.Join(",",haul.Routes.Select(y => 
y.RouteCode).ToList()) : string.Empty;

0

आप google-collection.jar का उपयोग कर सकते हैं जिसमें एक उपयोगिता वर्ग है जिसे Joiner कहा जाता है

 String commaSepString=Joiner.on(",").join(lst);

या

आप StringUtils वर्ग का उपयोग कर सकते हैं, जिसमें फ़ंक्शन का नाम जुड़ गया है। StringUtils वर्ग का उपयोग करने के लिए, आपको सामान्य-lang3.jar का उपयोग करने की आवश्यकता है

String commaSepString=StringUtils.join(lst, ',');

संदर्भ के लिए, इस लिंक http://techno-terminal.blogspot.in/2015/08/convert-collection-into-comma-separated.html देखें


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);}

स्ट्रिंग की एक सूची को कॉमा से अलग स्ट्रिंग सी में परिवर्तित करें #


0

यदि आपकी सूची आइटम में एक से अधिक स्ट्रिंग है, तो आप ToString () को भी ओवरराइड कर सकते हैं

public class ListItem
{

    public string string1 { get; set; }

    public string string2 { get; set; }

    public string string3 { get; set; }

    public override string ToString()
    {
        return string.Join(
        ","
        , string1 
        , string2 
        , string3);

    }

}

सीएसवी स्ट्रिंग प्राप्त करने के लिए:

ListItem item = new ListItem();
item.string1 = "string1";
item.string2 = "string2";
item.string3 = "string3";

List<ListItem> list = new List<ListItem>();
list.Add(item);

string strinCSV = (string.Join("\n", list.Select(x => x.ToString()).ToArray()));


0

आप इस तरह से अल्पविराम द्वारा सूची संस्थाओं को अलग कर सकते हैं:

//phones is a list of PhoneModel
var phoneNumbers = phones.Select(m => m.PhoneNumber)    
                    .Aggregate(new StringBuilder(),
                        (current, next) => current.Append(next).Append(" , ")).ToString();

// Remove the trailing comma and space
if (phoneNumbers.Length > 1)
    phoneNumbers = phoneNumbers.Remove(phoneNumbers.Length - 2, 2);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.