2010-09-12 6 views
6

Ich möchte eine kommaseparierte Wert Zeichenfolge mit Linq Aggregat-Funktion machen. Weiß jemand, wie man das macht?Linq Aggregat-Funktion, So erstellen Sie eine CSV-Zeichenfolge

ein Array von Strings wie folgt gegeben:

var authors = new string[] {"author 1", "author 2", "author 3"}; 

Wie kann ich eine einzelne Zeichenfolge wie dieser Autor abrufen 1, Autor 2, Autor 3? Ich denke, etwas wie authors.Aggregate(author => author + ",") könnte dazu in der Lage sein, aber nicht sicher.

Ideen?

+0

Mögliche Duplikat [LINQ Aggregate Algorithmus erklärt] (http://stackoverflow.com/questions/7105505/linq-aggregate-algorithm-explained) – Jamiec

Antwort

11

Wenn Sie sie nur durch Kommas trennen suchen, nur string.Join verwenden:

string.Join(", ", authors); 

Dies wird mit jedem IEnumerable < String arbeiten> (zumindest in .NET 4.0), aber hat funktioniert mit Arrays von Strings seit 1.0.

+0

O Cool, ich schätze, Aggregat ist nicht wirklich das, was ich brauche. Sieht so aus als wäre Join das Richtige. Ich werde es versuchen ... danke. –

+0

Guter Anruf - ich habe diese Methode vergessen! – ColinE

6

Wie Bennor McCarthy sagt, wäre es viel besser, string.Join für diesen Zweck zu verwenden. Wenn Sie wirklich Enumerable.Aggregate wollen, obwohl verwenden, sollte dies tun:

string csvString = authors.Aggregate((csvSoFar, author) => csvSoFar + ", " + author); 

Dies entspricht in etwa:

string csvString = authors.First(); 

foreach (string author in authors.Skip(1)) 
{ 
    csvString += ", " + author; 
} 
+2

Danke, Ya sieht aus wie Join ist viel ist ein viel einfacher Ansatz für diese Aufgabe. –

Verwandte Themen