2011-09-20 21 views
31

Supongamos que, para fines de depuración, quiero obtener rápidamente el contenido de un IEnumerable en una cadena de una línea con cada elemento de cadena separado por comas. Puedo hacerlo en un método de ayuda con un ciclo foreach, pero eso no es divertido ni breve. ¿Se puede usar Linq? ¿Algún otro camino corto?Cómo convertir IEnumerable <string> a una cadena separada por comas?

+1

Posible duplicado de [IEnumerable to string] (http://stackoverflow.com/questions/3414263/ienumerable-to-string) –

Respuesta

62
using System; 
using System.Collections.Generic; 
using System.Linq; 

class C 
{ 
    public static void Main() 
    { 
     var a = new []{ 
      "First", "Second", "Third" 
     }; 

     System.Console.Write(string.Join(",", a)); 

    } 
} 
6
collection.Aggregate("", (str, obj) => str + obj.ToString() + ","); 
23
string output = String.Join(",", yourEnumerable); 

String.Join Method (String, IEnumerable

concatena los miembros de una colección IEnumerable construida de tipo cadena, usando el separador especificado entre cada miembro.

3
IEnumerable<string> foo = 
var result = string.Join(",", foo); 
+0

por qué .ToArray()? –

+0

mi error, he editado la respuesta. –

+1

El .ToArray() al final de String.Join es necesario para .NET <4 – UNeverNo

1

a unirse gran matriz de cadenas en una cadena, no utilice directamente +, utilizar StringBuilder para recorrer uno por uno, o string.join en una sola toma.

+0

OT: Para concatenaciones de 3 operandos, el compilador convertirá esas operaciones en una llamada de la cadena. Método de ejecución que toma 3 parámetros. Entonces con más de 3 operandos, StringBuilder es útil. –

Cuestiones relacionadas