String.Join в списке объектов

В С#, если у меня есть List<MyObj>, где MyObj - это настраиваемый класс с переопределенным методом ToString(), так что каждый объект MyObj в Списке может быть легко преобразован в строку.

Как я могу присоединиться к этому List<MyObj> с помощью разделителя, такого как, например, pipe (|), в одну строку.

Итак, если бы у меня было 3 объекта MyObj, методы ToString которых создавали бы AAA, BBB, CCC соответственно. Я бы создал одну строку: AAA | BBB | CCC.

Для списка более простого типа, такого как List<string>, я выполняю это просто как: String.Join("|",myList.ToArray());. Есть ли способ сделать что-то подобное этому? Или я вынужден перебирать список объектов и использовать String Builder для добавления каждого объекта ToString в список вместе?

Ответ 1

В .NET 4 вы можете просто использовать:

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

.NET 3.5 не имеет столько перегрузок для string.Join, хотя - вам нужно выполнить преобразование строк и явно включить его в массив:

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

Сравните доступные перегрузки: