String.Join on a list of objects

c#, list

Solution

In .NET 4, you could just use:

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

.NET 3.5 doesn't have as many overloads for `string.Join` though - you need to perform the string conversion and turn it into an array explicitly:

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

Compare the overloads available:

- .NET 3.5

- .NET 4

Problem

In C#, if I have a `List<MyObj>` where `MyObj` is a custom class with an overridden `ToString()` method such that each `MyObj` object in the List can be easily converted to a string. How can I join this `List<MyObj>` with a delimiter, such as for example a pipe (|) into a single string. So, if I had 3 MyObj objects whose ToString methods would produce AAA, BBB, CCC respectively. I would create a single string: AAA|BBB|CCC. For a list of a simpler type, such as `List<string>`, I perform this simply as: `String.Join("|", myList.ToArray());`. Is there a way I can do something similar to that? Or am I forced to iterate over the Object List and use a StringBuilder to append each object's ToString in the list together?

Original source

Related problems