Daftar string ke satu string


206

Katakanlah Anda memiliki:

List<string> los = new List<string>();

Dalam dunia fungsional yang gila ini kita hidup di zaman sekarang yang mana yang terbaik untuk membuat satu string dengan menggabungkan ini:

String.Join(String.Empty, los.ToArray());

StringBuilder builder = new StringBuilder();
los.ForEach(s => builder.Append(s));

string disp = los.Aggregate<string>((a, b) => a + b);

atau foreach StringBuilder tua polos

ATAU adakah cara yang lebih baik?


9
Sepertinya .Net 4 juga akan menyertakan string. Bergabung (string, IEnumerable <string>), memungkinkan Anda melewati ToArray () msdn.microsoft.com/en-us/library/dd783876.aspx
luke

Jawaban:


289

Saya akan memilih opsi A:

String.Join(String.Empty, los.ToArray());

Alasan saya adalah karena metode Bergabung ditulis untuk tujuan itu. Bahkan jika Anda melihat Reflector, Anda akan melihat bahwa kode yang tidak aman digunakan untuk benar-benar mengoptimalkannya. Dua lainnya juga BEKERJA, tapi saya pikir fungsi Gabung ditulis untuk tujuan ini, dan saya kira, yang paling efisien. Saya bisa saja salah ...

Sesuai @Nuri YILMAZ tanpa .ToArray(), tapi ini. NET 4+:

String.Join(String.Empty, los);

GA! Saya bahkan tidak melihat opsi ini saat pertama kali membacanya.
Joel Coehoorn

2
3 kali lebih cepat dari StringBuilder? Wow, saya pikir itu akan lebih cepat, tidak menyadari betapa jauh lebih cepat. Masuk akal, itu dilakukan dalam kode yang tidak aman menggunakan pointer, jadi ..... masuk akal.
BFree

8
bagus! hanya komentar: Gabung tidak perlu los.ToArray (), karena Daftar <T> dapat menampilkan IEnumarable <T>.
Nuri YILMAZ

8
@ Nuri: Pertanyaan ini ditanyakan pada 08, sebelum. Net 4 keluar. Kelebihan yang mengambil IEnumerable <T> ditambahkan dalam. Net 4.
BFree

2
String.Gabung bersama dengan String.Compat adalah emas. Mis: 'String.Concat ("{", String.Join (",", m_Data), "}");'
KornMuffin

51
string.Concat(los.ToArray());

Jika Anda hanya ingin menggabungkan string maka gunakan string.Concat () alih-alih string.Join ().


18

Jika Anda menggunakan .net 4.0 Anda dapat menggunakan cara penyortir:

String.Join<string>(String.Empty, los);

10

String.Join () diimplementasikan cukup cepat, dan karena Anda sudah memiliki koleksi string yang dimaksud, mungkin merupakan pilihan terbaik. Di atas semua itu, teriakan "Saya bergabung dengan daftar string!" Selalu baik.



5

Pilihan saya adalah string. Bergabunglah

Tidak perlu evaluasi lambda dan fungsi sementara yang akan dibuat, lebih sedikit panggilan fungsi, lebih sedikit tumpukan yang mendorong dan muncul.

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.