Tamsayı dizisini virgülle ayrılmış dizeye dönüştürme


273

Bu basit bir soru; Ben C # bir acemi, nasıl aşağıdaki yapabilirim

  • Tamsayı dizisini virgülle ayrılmış bir dizeye dönüştürmek istiyorum.

Sahibim

int[] arr = new int[5] {1,2,3,4,5};

Bir dizeye dönüştürmek istiyorum

string => "1,2,3,4,5"

Yanıtlar:


539
var result = string.Join(",", arr);

Bu, aşağıdaki aşırı yüklenmeyi kullanır string.Join:

public static string Join<T>(string separator, IEnumerable<T> values);

Bu durumda açık genel argümanı iletmeniz gerekmez. Çıkarım yapılacaktır.
leppie

6
Pre .NET 4 string.Join (",", Array.ConvertAll (arr, i => i.ToString ()))
TPAKTOPA

Bunun tersini yapmanın basit bir yolu var mı? Dizeyi alıp bir diziye koymak?
Kory

3
@Kory: string.split yöntemi kullanarak, bkz msdn.microsoft.com/en-us/library/...
Cheng Chen

132

.NET 4

string.Join(",", arr)

.NET daha önce

string.Join(",", Array.ConvertAll(arr, x => x.ToString()))

17
.NET4 öncesi sürüm için teşekkürler!
kdenney

1
Sadece .net 4 sürümünü kullanamadığımı fark ettim ve cevabınızı görene kadar neden bir hataya sahip olduğumu anlamadım, teşekkürler.
Luis Tellez

.NET 4.5 kullanıyorum. Ben bir dize ile virgülle ayrılmış sayıları concat çalıştı. "Karakter [] char dönüştürmek olamaz" diyerek bir hata var. Bu yüzden önceki sürüm kusursuz çalıştı.
Prasanth G

10
int[] arr = new int[5] {1,2,3,4,5};

Bunun için Linq kullanabilirsiniz

String arrTostr = arr.Select(a => a.ToString()).Aggregate((i, j) => i + "," + j);

5

Bu görevi kolaylaştırmak için bir çift uzantı yönteminiz olabilir:

public static string ToDelimitedString<T>(this IEnumerable<T> lst, string separator = ", ")
{
    return lst.ToDelimitedString(p => p, separator);
}

public static string ToDelimitedString<S, T>(this IEnumerable<S> lst, Func<S, T> selector, 
                                             string separator = ", ")
{
    return string.Join(separator, lst.Select(selector));
}

Şimdi sadece:

new int[] { 1, 2, 3, 4, 5 }.ToDelimitedString();

3

AggregateTamsayı dizisini virgülle ayrılmış dizeye dönüştürmek için LINQ yöntemini kullanma

var intArray = new []{1,2,3,4};
string concatedString = intArray.Aggregate((a, b) =>Convert.ToString(a) + "," +Convert.ToString( b));
Response.Write(concatedString);

çıktı olacak

1,2,3,4

Bu, .net 4 yüklü değilse kullanabileceğiniz çözümlerden biridir.


Bununla birlikte, dize birleştirme nedeniyle kötü performans gösteriyor
Simon Belanger

evet düşük performansla çalışacaktır ancak .net 4.0 önce string.join sadece biz de daha iyi çalışması ancak boş istisna sorunu vardır .we ToString kullanabilirsiniz dizesinde dönüştürmek gerekir bu durumda parameter.Thus olarak dize dizisi almak
sushil pandey
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.