2008-12-19 12 views
43

Cerrado como duplicado exacto de this question.El método más corto para convertir una matriz en una cadena en C#/LINQ

Tengo una matriz/lista de elementos. Quiero convertirlo en una cadena, separada por un delimitador personalizado. Por ejemplo:

[1,2,3,4,5] => "1,2,3,4,5" 

¿Cuál es la forma más corta/esiest de hacer esto en C#?

Siempre lo he hecho ciclando la lista y comprobando si el elemento actual no es el último antes de agregar el separador.

for(int i=0; i<arr.Length; ++i) 
{ 
    str += arr[i].ToString(); 
    if(i<arr.Length) 
     str += ","; 
} 

¿Existe una función LINQ que me pueda ayudar a escribir menos código?

Respuesta

134
String.Join(",", arr.Select(p=>p.ToString()).ToArray()) 
+6

En realidad no necesitan la ToArray() ... string.join puede tomar un IEnumerable, y IEnumerable.Select devuelve un IEnumerable. – neminem

+7

@neminem 'string.Join (cadena, IEnumerable )' no existía en 2008. –

36
String.Join(",", array.Select(o => o.ToString()).ToArray()); 
Cuestiones relacionadas