Autore: Matteo Baglini
Grazie al metodo Aggregate fornito da Linq To Object possiamo effettuare la concatenazione di stringhe con una sintassi completamente dichiarativa.
private static void DemoNoStringBuilder()
{
var words = new[] { "one", "two", "three" };
var res = words.Aggregate((current, next) => current + ", "+ next);
Console.WriteLine(res);
}
Questo codice, dato che utilizza l'operatore "+" per effettuare la concatenazione, non è scalabile e soffre di gravi prpblemi di performance se utilizzato con molte stringhe. In scenari del genere è fortemente consigliato l'uso della classe StringBuilder. A questo punto la domanda sorge spontanea, possiamo sruttare l'espressività di Aggregate e la potenza si StringBuilder? Ma certo!!
private static void DemoStringBuilder()
{
var words = new[] { "one", "two", "three" };
var res = words.Aggregate(new StringBuilder(), (sb, next) => sb.Append(sb.Length > 0 ? ", " + next : next)).ToString();
Console.WriteLine(res);
}