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());
Сравните доступные перегрузки: