Usted puede usar el método string.Join
para hacer algo como string.Join(",", o.Number, o.Id, o.whatever, ...)
.
editar: Como digEmAll dijo, string.Join es más rápido que StringBuilder. Usan una implementación externa para la cadena. Únete.
perfiles de código (del recorrido de la carrera en la liberación sin símbolos de depuración):
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 tomó 2 ms en mi máquina y StringBuilder.Append 5ms. Entonces hay una diferencia notable. Gracias a digAmAll por la pista.
En general, se considera menos eficiente para concatenar cadenas con el símbolo '+'. Crea más objetos para ser basura recolectada. –
[Separación de coma manual en comparación con la genial clase CommaDelimitedStringCollection!] (Http://izlooite.blogspot.com/2009/12/manual-comma-separation-versus-cool.html) –