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?


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.


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


25

Menggunakan String.Join

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

Menggunakan Linq Aggregation

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

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!


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

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.


3

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

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

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

1

Mencoba

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

HTH


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;


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 #


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

0
categories = ['sprots', 'news'];
categoriesList = ", ".join(categories)
print(categoriesList)

Ini adalah output: sprots, news


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);
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.