Questa risposta mostra l'utilizzo di LINQ ( Aggregate
) come richiesto nella domanda e non è inteso per l'uso quotidiano. Poiché questo non utilizza un StringBuilder
, avrà prestazioni orribili per sequenze molto lunghe. Per un uso regolare del codice, String.Join
come mostrato nell'altra risposta
Usa query aggregate come questa:
string[] words = { "one", "two", "three" };
var res = words.Aggregate(
"", // start with empty string to handle empty list case.
(current, next) => current + ", " + next);
Console.WriteLine(res);
Questo produce:
, uno due tre
Un aggregato è una funzione che accetta una raccolta di valori e restituisce un valore scalare. Esempi di T-SQL includono min, max e sum. Sia VB che C # supportano gli aggregati. Sia VB che C # supportano aggregati come metodi di estensione. Usando la notazione punto, si chiama semplicemente un metodo su un oggetto IEnumerable .
Ricorda che le query aggregate vengono eseguite immediatamente.
Ulteriori informazioni - MSDN: query aggregate
Se vuoi davvero Aggregate
usare la variante di utilizzo usando StringBuilder
proposta nel commento di CodeMonkeyKing che dovrebbe essere più o meno lo stesso codice del normale String.Join
inclusa una buona prestazione per un gran numero di oggetti:
var res = words.Aggregate(
new StringBuilder(),
(current, next) => current.Append(current.Length == 0? "" : ", ").Append(next))
.ToString();