2010-05-26 14 views

Respuesta

54

¿Qué versión de .NET? En 4.0 puedes usar string.Join(",",integerArray). En 3.5 me sentiría tentado de usar string.Join(",",Array.ConvertAll(integerArray,i=>i.ToString())); (asumiendo que es una matriz). De lo contrario, ya sea , haga una matriz, o use StringBuilder.

+0

¿No sería siempre mejor utilizar un StringBuilder en este caso? –

+4

Por extraño que parezca, la unión es más eficiente que el StringBuilder. Hice una prueba, y con una matriz de 1,000,000 de tamaño, Join tomó 207ms, mientras que StringBuilder tomó 264ms. Sospecho que esto se debe a que la unión está optimizada para la tarea, mientras que la SB se optimiza más para el caso general. – Cyberherbalist

+0

Si para empezar no tenía el tipo 'Array', ¿existe una diferencia de velocidad entre' Array.ConvertAll (list.ToArray(), ...) 'versus' IEnumerable.Select (...). ToArray() '? – Michael

14

El error que está recibiendo es porque no usó la anulación de Aggregate que le permite especificar la semilla. Si no especifica la semilla, usa el tipo de la colección.

integerArray.Aggregate("", (accumulator, piece) => accumulator + "," + piece); 
+1

+1 porque respondió la pregunta. Sin embargo, su código tiene un rendimiento O (n^2). No genial. –

+0

ahora cuenta el número de cadenas involucradas ... –

+1

@KennetBelenky, 'Agregado' no es más que un bucle foreach que establece el valor de una variable. - Eso es O (n) no O (n^2)? – ebb

2

sólo para añadir otra alternativa a la de Marc @

var list = string.Join(",", integerArray.Select(i => i.ToString()).ToArray()); 
11

Es posible que desee utilizar String.Join.

string.Join(",", integerArray.Select(i => i.ToString()).ToArray()); 

Si está utilizando .Net 4.0, no es necesario pasar por la molestia de cosificar una matriz. y puede simplemente hacer

string.Join(",", integerArray); 
+0

¡Deslizante! De mucha ayuda. – Cyberherbalist

Cuestiones relacionadas