2011-09-20 9 views
31

dire che a scopo di debug, voglio ottenere rapidamente il contenuto di un oggetto IEnumerable in stringa di una riga con ogni elemento stringa separato da virgole. Posso farlo in un metodo di supporto con un ciclo foreach, ma non è né divertente né breve. Si può usare Linq? Qualche altro modo corto?Come convertire IEnumerable <string> in una stringa separata da virgole?

+1

Possibile duplicato di [IEnumerable to string] (http://stackoverflow.com/questions/3414263/ienumerable-to-string) –

risposta

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 i membri di un insieme IEnumerable costruito tipo String, utilizzando il separatore specificato tra ogni elemento.

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

perché il .ToArray()? –

+0

il mio errore, ho modificato la risposta. –

+1

Il .ToArray() alla fine del String.Join è necessaria per NET <4 – UNeverNo

1

ad unirsi grandi array di stringhe in una stringa, non utilizzare direttamente +, utilizzare StringBuilder per scorrere uno per uno, o String.Join in un solo colpo.

+0

OT: Per concatenazioni di 3 operandi il compilatore trasformare tali operazioni a una chiamata del metodo string.Append prendendo 3 parametri. Quindi con più di 3 operandi, StringBuilder è utile. –

Problemi correlati