2012-05-10 16 views
10

In C#, se ho un List<MyObj> dove MyObj è una classe personalizzata con una ToString() metodo ignorato tale che ogni oggetto MyObj nella lista può essere facilmente convertito in una stringa.String.Join su un elenco di oggetti

Come faccio a questo List<MyObj> con un delimitatore, ad esempio un tubo (|) in una stringa singola.

Quindi, se avessi 3 oggetti MyObj i cui metodi ToString avrebbero prodotto rispettivamente AAA, BBB, CCC. Creerei una singola stringa: AAA | BBB | CCC.

Per un elenco di un tipo più semplice, ad esempio List<string>, eseguo semplicemente come: String.Join("|",myList.ToArray());. C'è un modo per fare qualcosa di simile? Oppure sono obbligato a scorrere l'Elenco oggetti e utilizzare un generatore di stringhe per aggiungere la ToString di ciascun oggetto nell'elenco insieme?

risposta

33

In .NET 4, si potrebbe utilizzare:

var x = string.Join("|", myList); 

.NET 3.5 non ha il maggior numero di sovraccarichi per string.Join anche se - è necessario eseguire la conversione di stringa e di trasformarlo in una matrice esplicitamente:

var x = string.Join("|", myList.Select(x => x.ToString()).ToArray()); 

Confronta i sovraccarichi disponibili:

+0

Grazie, esattamente le informazioni di cui avevo bisogno. – user17753

Problemi correlati