2010-08-12 5 views

Antwort

92

In .NET 2/3

var csv = string.Join(", ", list.Select(i => i.ToString()).ToArray()); 

oder (in .NET 4,0)

var csv = string.Join(", ", list); 
+0

funktioniert nicht, wenn "Liste" ist eine Liste von ganzen Zahlen wie in der Frage angegeben. – Timwi

+0

@Timwi - eigentlich tut es in. NET 4, obwohl, ich habe vergessen, dass Sie nicht mehr ein Array benötigen, wird jedes aufzählbare funktionieren. – tvanfosson

+0

Ja, ich wurde falsch informiert. Downvote zurückgezogen. – Timwi

3

Ist das, was Sie suchen?

// Can be int[], List<int>, IEnumerable<int>, ... 
int[] myIntegerList = ...; 

string myCSV = string.Join(", ", myIntegerList.Select(i => i.ToString()).ToArray()); 

Beginnend mit C# 4.0, die zusätzliche MumboJumbo ist nicht mehr erforderlich, es funktioniert alles automatisch:

// Can be int[], List<int>, IEnumerable<int>, ... 
int[] myIntegerList = ...; 

string myCSV = string.Join(", ", myIntegerList); 
+0

Tatsächlich sollte die Liste "IEnumerable" sein, weil alle anderen Container (Sie erwähnten und nicht nur sie) "IEnumerable" erben und "Select" ist eine Methode von "IEnumerable" – abatishchev

+0

@abatishchev: Die anderen Container * implementieren * 'IEnumerable' , richtig. Der Rest von dem, was Sie falsch gesagt haben, vor allem die "Liste sollte IEnumerable sein", aber auch das "Select" ist eine Methode von "IEnumerable" (und selbst wenn Sie "IEnumerable " gesagt hätten, wäre es immer noch falsch liegen). Es ist eine Erweiterungsmethode. – Timwi

+0

Eigentlich ist sogar die Auswahl als Zeichenfolge nicht notwendig, da 'Join (Zeichenfolge, IEnumerable )' jedes Element im Enumerable automatisch in eine Zeichenfolge konvertiert. – tvanfosson

2
string csv = String.Join(", ", list.Select(i=> i.ToString()).ToArray()); 
+0

Technisch liefert diese Antwort nicht die erwartete Ausgabe, wie in der Frage angegeben ;-) – Timwi

+0

OK, ich habe den zusätzlichen Platz hinzugefügt .... –

0
String.Join(", ", list); //in .NET 4.0 

und

String.Join(", ", list   
    .Select(i => i.ToString()).ToArray()) //in .NET 3.5 and below 
+0

Warum der Downvote? –

+0

Ihre zweite Aussage macht keinen Sinn. Sie erhalten ein String-Array mit einem Element. –

+0

@Scott hatte extra Paranhesen aus meinen Tests, behoben. –

Verwandte Themen