Bir IList<string>
veya IEnumerable<string>
öğesinden virgülle ayrılmış bir dize değerleri listesi oluşturmanın en temiz yolu nedir?
String.Join(...)bir
string[]üzerinde çalışır, bu nedenle
IListveya
IEnumerable
.NET 4+
IList<string> strings = new List<string>{"1","2","testing"};
string joined = string.Join(",", strings);
Detay & .Net 4.0 Öncesi Çözümler
LINQ (.NET 3.5) ile IEnumerable<string>
bir string dizisine çok kolay bir şekilde dönüştürülebilir:
IEnumerable<string> strings = ...;
string[] array = strings.ToArray();
Gerekirse eşdeğer bir yardımcı yöntem yazmak yeterince kolaydır:
public static T[] ToArray(IEnumerable<T> source)
{
return new List<T>(source).ToArray();
}
O zaman şöyle deyin:
IEnumerable<string> strings = ...;
string[] array = Helpers.ToArray(strings);
Daha sonra string.Join
öğesini çağırabilirsiniz. Elbette, bir yardımcı yöntem kullanmak zorunda değilsiniz:
// C# 3 and .NET 3.5 way:
string joined = string.Join(",", strings.ToArray());
// C# 2 and .NET 2.0 way:
string joined = string.Join(",", new List<string>(strings).ToArray());
İkincisi biraz ağız dolusu olsa da :)
Bu muhtemelen bunu yapmanın en basit yoludur ve aynı zamanda oldukça performanslıdır - performansın tam olarak nasıl olduğu hakkında bu dahil (ancak bununla sınırlı olmamak üzere) başka sorular da vardır.
NET 4.0'dan itibaren, string.Join
içinde daha fazla aşırı yük mevcuttur, bu nedenle aslında sadece yazabilirsiniz:
string joined = string.Join(",", strings);
Çok daha basit :)
Listelerve
IEnumerablesüzerinde
.ToArray()kullanabilir ve ardından istediğiniz gibi
String.Join()` kullanabilirsiniz.