2012-05-10 12 views
10

En C#, si tengo una List<MyObj> donde MyObj es una clase personalizada con un ToString() método anulado de forma que cada MyObj objeto en la lista se puede convertir fácilmente en una cadena.string.join en una lista de objetos

¿Cómo puedo unirse a este List<MyObj> con un delimitador, como por ejemplo una barra vertical (|) en una sola cadena.

Entonces, si tuviera 3 objetos MyObj cuyos métodos ToString producirían AAA, BBB, CCC respectivamente. Crearía una sola cadena: AAA | BBB | CCC.

Para obtener una lista de un tipo más simple, como List<string>, realizo esto simplemente como: String.Join("|",myList.ToArray());. ¿Hay alguna manera de que pueda hacer algo similar a eso? ¿O me veo forzado a iterar sobre la Lista de Objetos y usar un Constructor de Cadenas para anexar los ToStrings de cada objeto en la lista?

Respuesta

33

En .NET 4, es posible que utilices:

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

.NET 3.5 no tiene tantas sobrecargas para string.Join sin embargo - que necesita para realizar la conversión de cadenas y convertirlo en una matriz de forma explícita:

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

Compare las sobrecargas disponibles:

+0

Gracias, exactamente la información que necesitaba. – user17753

Cuestiones relacionadas