Vous pouvez utiliser la méthode string.Join
pour faire quelque chose comme string.Join(",", o.Number, o.Id, o.whatever, ...)
.
edit: Comme le dit digEmAll, string.Join est plus rapide que StringBuilder. Ils utilisent une implémentation externe pour la chaîne.Join.
Code de profil (des cours d'exécution dans la version sans symboles de débogage):
class Program
{
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
string r;
int iter = 10000;
string[] values = { "a", "b", "c", "d", "a little bit longer please", "one more time" };
sw.Restart();
for (int i = 0; i < iter; i++)
r = Program.StringJoin(",", values);
sw.Stop();
Console.WriteLine("string.Join ({0} times): {1}ms", iter, sw.ElapsedMilliseconds);
sw.Restart();
for (int i = 0; i < iter; i++)
r = Program.StringBuilderAppend(",", values);
sw.Stop();
Console.WriteLine("StringBuilder.Append ({0} times): {1}ms", iter, sw.ElapsedMilliseconds);
Console.ReadLine();
}
static string StringJoin(string seperator, params string[] values)
{
return string.Join(seperator, values);
}
static string StringBuilderAppend(string seperator, params string[] values)
{
StringBuilder builder = new StringBuilder();
builder.Append(values[0]);
for (int i = 1; i < values.Length; i++)
{
builder.Append(seperator);
builder.Append(values[i]);
}
return builder.ToString();
}
}
string.join a 2ms sur ma machine et StringBuilder.Append 5ms. Il y a donc une différence notable. Merci à digAmAll pour l'indice.
D'une manière générale, il est considéré comme moins efficace de concaténer des chaînes avec le symbole '+'. Cela crée plus d'objets à ramasser. –
[séparation manuelle des virgules par rapport à la classe cool CommaDelimitedStringCollection!] (Http://izlooite.blogspot.com/2009/12/manual-comma-separation-versus-cool.html) –