2010-09-12 15 views
6

Vorrei creare una stringa di valori separata da virgola con la funzione Aggregazione di Linq. Qualcuno sa come fare questo?Funzione aggregazione di Linq, Come creare una stringa CSV

dato un array di stringhe in questo modo:

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

Come faccio ad avere una singola stringa come questo autore 1, autore 2, autore 3? Sto pensando che qualcosa come authors.Aggregate(author => author + ",") potrebbe essere in grado di farlo ma non è sicuro.

Idee?

+0

Eventuali duplicati di [LINQ Aggregate algoritmo spiegato] (http://stackoverflow.com/questions/7105505/linq-aggregate-algorithm-explain) – Jamiec

risposta

11

Se si sta solo cercando di loro separati da virgole, basta usare string.join:

string.Join(", ", authors); 

Questo funziona con qualsiasi < stringa IEnumerable> (almeno in .NET 4.0), ma ha lavorato con matrici di stringhe dalla 1.0.

+0

O Cool, suppongo che Aggregate non sia proprio quello di cui ho bisogno. Sembra che Join sia la cosa giusta. Darò provare questo ... grazie. –

+0

Buona chiamata - Ho dimenticato questo metodo! – ColinE

6

Come dice Bennor McCarthy, sarebbe molto meglio usare string.Join per questo scopo. Se davvero si vuole utilizzare Enumerable.Aggregate però, questo dovrebbe fare:

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

Questo è più o meno equivalente a:

string csvString = authors.First(); 

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

Grazie, Ya sembra che Join is much sia un approccio molto più semplice per questo compito. –

Problemi correlati