Ubah Daftar menjadi String Dipisahkan Koma

158

Kode saya adalah sebagai berikut:

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

Keluaran: 1,2,3,4,5

Apa cara paling sederhana untuk mengkonversi List<uint>menjadi string yang dipisahkan koma?

SKJ
sumber
9
String.Joinitu yang kamu butuhkan.
asawyer
9
var csvString = String.Join(",", lst);harus melakukannya.
Mithrandir
2
Bagi siapa saja yang ingin membuka kembali ini, jika tidak terlalu terlokalisasi itu adalah duplikat: stackoverflow.com/questions/799446/...
Tim Schmelter

Jawaban:

320

Nikmati!

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

Parameter Pertama: ","
Parameter Kedua:new List<uint> { 1, 2, 3, 4, 5 })

String.Join akan mengambil daftar sebagai parameter kedua dan bergabung dengan semua elemen menggunakan string yang dilewatkan sebagai parameter pertama menjadi satu string tunggal.

Richard Dalton
sumber
11
Dalam. NET 3.5 dan di bawah Anda harus secara eksplisit mengkonversi daftar Anda ke array dengan lst.ToArray(), karena belum ada kelebihan langsung di sana.
Anton
69

Anda dapat menggunakan metode String.Join untuk menggabungkan item:

var str = String.Join(",", lst);
Sergey Berezovskiy
sumber
ini tidak bekerja untuk saya. Ini menghasilkan nama koleksi daripada objek dalam daftar.
Rani Radcliff
25

Menggunakan String.Join

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

Menggunakan Linq Aggregation

lst .Aggregate((a, x) => a + "," + x);
MuhammadHani
sumber
1
Saya memiliki daftar tipe int32. ketika saya menggunakan fungsi agregat yang Anda sebutkan, ia mengatakan "Tidak dapat mengonversi ekspresi lambda untuk mendelegasikan ketik 'System.Func <int, int, int>' karena beberapa jenis pengembalian dalam blok tidak secara implisit dikonversi ke jenis pengembalian delegasi" dan "Tidak dapat secara implisit mengonversi tipe 'string' menjadi 'int'"
Hari
1
@Hari Anda harus mengubahnya ke nilai string sebelum Anda Aggragate ke string. Jadi Anda dapat melakukan sesuatu seperti ini: list. Pilih (x => string.Format ("{0}: {1}", x.Key, x.Value)) .Gregate ((a, x) => a + " , "+ x);
Taruhan
11

Jika Anda memiliki koleksi int:

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

Anda dapat menggunakan string.Joinuntuk mendapatkan string:

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

Nikmati!

Rejwanul Reja
sumber
9

Ikuti ini:

       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()));
Salim Latif Waigaonkar
sumber
4
          @{  var result = string.Join(",", @user.UserRoles.Select(x => x.Role.RoleName));
              @result

           }

Saya menggunakan MVC Razor View untuk mengevaluasi dan mencetak semua peran yang dipisahkan oleh koma.

Syed Qasim Abbas
sumber
3

Anda bisa menggunakan String.Join untuk ini jika Anda menggunakan .NET framework> 4.0.

var result= String.Join(",", yourList);
Abdus Salam Azad
sumber
2

Anda dapat merujuk contoh di bawah ini untuk mendapatkan array string yang dipisahkan koma dari daftar.

Contoh:

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());
Gaurang Dhandhukiya
sumber
1

Mencoba

Console.WriteLine((string.Join(",", lst.Select(x=>x.ToString()).ToArray())));

HTH

Jay
sumber
1

Kita dapat mencoba seperti ini untuk memisahkan daftar entri dengan koma

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

Anda dapat menggunakan google-collections.jar yang memiliki kelas utilitas bernama Joiner

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

atau

Anda dapat menggunakan kelas StringUtils yang memiliki fungsi bernama join.Untuk memanfaatkan kelas StringUtils, Anda perlu menggunakan common-lang3.jar

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

untuk referensi, lihat tautan ini http://techno-terminal.blogspot.in/2015/08/convert-collection-into-comma-separated.html

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

Ubah daftar string menjadi string yang dipisahkan koma C #

hitesh kumar
sumber
0

Anda juga dapat mengganti ToString () jika item daftar Anda memiliki lebih dari satu string

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

    }

}

untuk mendapatkan string csv:

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()));
ACJ
sumber
0
categories = ['sprots', 'news'];
categoriesList = ", ".join(categories)
print(categoriesList)

Ini adalah output: sprots, news

sudharsanan r
sumber
0

Anda dapat memisahkan entitas daftar dengan koma seperti ini:

//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);
Fateme Mirjalili
sumber