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.Joincome 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 Aggregateusare la variante di utilizzo usando StringBuilderproposta nel commento di CodeMonkeyKing che dovrebbe essere più o meno lo stesso codice del normale String.Joininclusa 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();