Bagaimana cara mengonversi daftar menjadi string dalam C #?
Ketika saya mengeksekusi toString
pada objek Daftar, saya mendapatkan:
System.Collections.Generic.List`1 [System.String]
Bagaimana cara mengonversi daftar menjadi string dalam C #?
Ketika saya mengeksekusi toString
pada objek Daftar, saya mendapatkan:
System.Collections.Generic.List`1 [System.String]
Jawaban:
Mungkin Anda sedang berusaha melakukannya
string combindedString = string.Join( ",", myList.ToArray() );
Anda dapat mengganti "," dengan apa yang ingin Anda pisahkan elemen dalam daftar.
Sunting : Seperti disebutkan dalam komentar yang juga bisa Anda lakukan
string combindedString = string.Join( ",", myList);
Referensi:
Join<T>(String, IEnumerable<T>)
Concatenates the members of a collection, using the specified separator between each member.
Saya akan pergi dengan firasat saya dan menganggap Anda ingin menyatukan hasil dari memanggil ToString
setiap elemen dari daftar.
var result = string.Join(",", list.ToArray());
Anda bisa menggunakan string.Join
:
List<string> list = new List<string>()
{
"Red",
"Blue",
"Green"
};
string output = string.Join(Environment.NewLine, list.ToArray());
Console.Write(output);
Hasilnya adalah:
Red
Blue
Green
Sebagai alternatif Environment.NewLine
, Anda dapat menggantinya dengan pemisah garis berbasis string yang Anda pilih.
Jika Anda menginginkan sesuatu yang sedikit lebih kompleks daripada gabung sederhana, Anda dapat menggunakan LINQ misalnya
var result = myList.Aggregate((total, part) => total + "(" + part.ToLower() + ")");
Akan mengambil ["A", "B", "C"] dan menghasilkan "(a) (b) (c)"
String.Join(" ", myList)
atau String.Join(" ", myList.ToArray())
. Argumen pertama adalah pemisah antara substring.
var myList = new List<String> { "foo","bar","baz"};
Console.WriteLine(String.Join("-", myList)); // prints "foo-bar-baz"
Bergantung pada versi .NET Anda, Anda mungkin perlu menggunakan ToArray () pada daftar terlebih dahulu ..
Anda punya List<string>
- jadi jika Anda ingin mereka disatukan, kira-kira seperti itu
string s = string.Join("", list);
akan bekerja (setidaknya dalam. NET 4.0). Parameter pertama adalah pembatas. Jadi Anda juga bisa koma-delimit dll.
Anda mungkin juga ingin melihat menggunakan StringBuilder untuk melakukan menjalankan penggabungan, daripada membentuk daftar.
The .ToString()
metode untuk referensi jenis biasanya sembuh kembali keSystem.Object.ToString()
kecuali Anda menimpanya di tipe turunan (mungkin menggunakan metode ekstensi untuk built-in jenis). Perilaku default untuk metode ini adalah untuk menampilkan nama tipe yang dipanggil. Jadi yang Anda lihat adalah perilaku yang diharapkan.
Anda dapat mencoba sesuatu seperti string.Join(", ", myList.ToArray());
untuk mencapai ini. Ini langkah tambahan, tetapi bisa dimasukkan ke dalam metode ekstensi System.Collections.Generic.List<T>
untuk membuatnya sedikit lebih mudah. Sesuatu seperti ini:
public static class GenericListExtensions
{
public static string ToString<T>(this IList<T> list)
{
return string.Join(", ", list);
}
}
(Perhatikan bahwa ini adalah kode bebas dan tidak teruji. Saat ini saya tidak memiliki kompiler yang berguna. Jadi, Anda ingin sedikit bereksperimen dengannya.)
Sulit dikatakan, tetapi mungkin Anda mencari sesuatu seperti:
var myString = String.Join(String.Empty, myList.ToArray());
Ini secara implisit akan memanggil metode ToString () pada setiap item dalam daftar dan menyatukannya.
String.Concat()
akan mencapai hal yang sama lebih baik.
Jika Anda mencari untuk mengubah item dalam daftar menjadi string panjang yang besar, lakukan ini: String.Join("", myList)
. Beberapa versi kerangka kerja yang lebih lama tidak memungkinkan Anda untuk melewatkan IEnumerable sebagai parameter kedua, jadi Anda mungkin perlu mengubah daftar Anda menjadi sebuah array dengan memanggil .ToArray ().
Jawaban langsung untuk pertanyaan Anda adalah String.Join
seperti yang disebutkan orang lain.
Namun, jika Anda memerlukan beberapa manipulasi, Anda dapat menggunakan 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();
Metode ini membantu saya ketika mencoba untuk mengambil data dari File Teks dan menyimpannya di Array kemudian Tetapkan ke string yang tersedia.
string[] lines = File.ReadAllLines(Environment.CurrentDirectory + "\\Notes.txt");
string marRes = string.Join(Environment.NewLine, lines.ToArray());
Semoga dapat membantu Seseorang !!!!
semua jawaban di atas TIDAK bekerja untuk daftar bersarang.