Функция соединения строк в С# с использованием списка, применение соединения к первому элементу

У меня есть список с идентификаторами.

Пример:

123

456

789

Что я хочу сделать, так это вернуть все элементы в одну строку и разделить их с помощью '#'.

Мой результат будет: # 123 # 456 # 789

Я попробовал это, выполнив следующие действия:

//Start with a # at first

seperatedString = "#";

seperatedString = String.Join(" #", list.ToArray());

Но мой результат: 123 #456 #789

Почему мой разделитель не применяется к первому элементу строки?


person user3127554    schedule 21.12.2017    source источник
comment
Потому что это не то, что делает string.Join(), и в документации так сказано: объединяет элементы указанного массива или элементы коллекции, используя указанный разделитель между каждым элементом или членом.   -  person Trioj    schedule 21.12.2017
comment
Вот как String.Join должно работать. См. MSDN.   -  person zcui93    schedule 21.12.2017
comment
Потому что он предназначен для такого поведения... Можете ли вы объяснить, почему вы ожидаете иного?   -  person Alexei Levenkov    schedule 21.12.2017


Ответы (2)


Он не применяется к первому элементу, потому что это "разделитель". Вы можете добавить его в начало вручную или использовать linq, например:

string result = string.Join(string.Empty, (new[] { 123, 456, 789 }).Select(i => "#" + i));
person N-ate    schedule 21.12.2017

person    schedule
comment
Это хорошо, потому что это также предотвращает добавление пробела перед # для первого элемента в списке, что я сомневаюсь, что OP захочет, поскольку вы использовали исходную разделенную строку, в которой было только #. - person Trioj; 21.12.2017