Esta respuesta muestra el uso de LINQ ( Aggregate
) según lo solicitado en la pregunta y no está destinado para el uso diario. Debido a que esto no usa un StringBuilder
, tendrá un rendimiento horrible para secuencias muy largas. Para el uso regular del código String.Join
como se muestra en la otra respuesta
Use consultas agregadas como esta:
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);
Esto produce:
, uno dos tres
Un agregado es una función que toma una colección de valores y devuelve un valor escalar. Los ejemplos de T-SQL incluyen min, max y sum. Tanto VB como C # tienen soporte para agregados. Tanto VB como C # admiten agregados como métodos de extensión. Usando la notación de puntos, uno simplemente llama a un método en un objeto IEnumerable .
Recuerde que las consultas agregadas se ejecutan de inmediato.
Más información - MSDN: consultas agregadas
Si realmente desea Aggregate
utilizar la variante de uso StringBuilder
propuesta en el comentario de CodeMonkeyKing, que sería aproximadamente el mismo código que el habitual, String.Join
incluido un buen rendimiento para una gran cantidad de objetos:
var res = words.Aggregate(
new StringBuilder(),
(current, next) => current.Append(current.Length == 0? "" : ", ").Append(next))
.ToString();