Вы имеете в виду строку combindedString = string.Join (",", myList.ToArray ());
Сэйв
2
Аргумент '2': невозможно преобразовать из 'System.Collections.Generic.List <string>' в 'string []'
Ash
9
Я использовал это недавно, это работает - просто опустите .ToArray ()
Adrian K
3
@AdrianK вы правы, потому что в .Net 4.0 добавлена возможность передавать любой IEnumerable <string>. Однако 4.0 был выпущен в апреле 2010 года, до того, как этот вопрос и ответ были опубликованы, так что, возможно, люди здесь просто еще не знали об этом (кроме нескольких ниже)
Эндрю Стейтц,
Для vb.net, Dim combindedString As String = String.Join (",", myList.ToArray ())
PartTimeNerd
55
Я собираюсь пойти с моим внутренним чувством и предположить, что вы хотите объединить результат вызова ToStringкаждого элемента списка.
.ToString()Метод для ссылочных типов , как правило , решает вернуться кSystem.Object.ToString() , если не переопределить его в производном типе (возможно , с использованием методов расширения для встроенных типов). Поведение по умолчанию для этого метода - выводить имя типа, для которого он вызывается. Так что вы видите ожидаемое поведение.
Вы можете попробовать что-то вроде string.Join(", ", myList.ToArray());этого. Это дополнительный шаг, но его можно добавить в метод расширения, System.Collections.Generic.List<T>чтобы сделать его немного проще. Что-то вроде этого:
(Обратите внимание, что это свободный и непроверенный код. На данный момент у меня нет удобного компилятора. Поэтому вы захотите немного поэкспериментировать с ним.)
это работает, когда я вызываю это не ToString или выполняю это с универсальным параметром. Но мне нравится ваша идея использования метода расширения :)
IAdapter
4
Трудно сказать, но, возможно, вы ищете что-то вроде:
var myString =String.Join(String.Empty, myList.ToArray());
Это неявно вызовет метод ToString () для каждого из элементов в списке и объединит их.
Если вы хотите , чтобы включить элементы в списке в большую длинную строку, сделайте следующее: String.Join("", myList). Некоторые старые версии фреймворка не позволяют вам передавать IEnumerable в качестве второго параметра, поэтому вам может потребоваться преобразовать ваш список в массив, вызвав .ToArray ().
Ответы:
Может быть, вы пытаетесь сделать
Вы можете заменить «,» тем, на что хотите разделить элементы в списке.
Изменить : как упоминание в комментариях вы также можете сделать
Ссылка:
источник
Я собираюсь пойти с моим внутренним чувством и предположить, что вы хотите объединить результат вызова
ToString
каждого элемента списка.источник
Вы можете использовать
string.Join
:Результат будет:
В качестве альтернативы
Environment.NewLine
вы можете заменить его на строковый разделитель по вашему выбору.источник
Если вы хотите что-то более сложное, чем простое соединение, вы можете использовать LINQ, например:
Возьму ["A", "B", "C"] и произведу "(a) (b) (c)"
источник
String.Join(" ", myList)
илиString.Join(" ", myList.ToArray())
. Первый аргумент - это разделитель между подстроками.В зависимости от вашей версии .NET вам может понадобиться сначала использовать ToArray () в списке.
источник
У вас есть
List<string>
- так что если вы хотите, чтобы они были объединены, что-то вродебудет работать (по крайней мере, в .NET 4.0). Первый параметр - это разделитель. Таким образом, вы также можете разделить запятыми и т. Д.
Вы также можете захотеть использовать StringBuilder для выполнения конкатенации, а не для формирования списка.
источник
.ToString()
Метод для ссылочных типов , как правило , решает вернуться кSystem.Object.ToString()
, если не переопределить его в производном типе (возможно , с использованием методов расширения для встроенных типов). Поведение по умолчанию для этого метода - выводить имя типа, для которого он вызывается. Так что вы видите ожидаемое поведение.Вы можете попробовать что-то вроде
string.Join(", ", myList.ToArray());
этого. Это дополнительный шаг, но его можно добавить в метод расширения,System.Collections.Generic.List<T>
чтобы сделать его немного проще. Что-то вроде этого:(Обратите внимание, что это свободный и непроверенный код. На данный момент у меня нет удобного компилятора. Поэтому вы захотите немного поэкспериментировать с ним.)
источник
Трудно сказать, но, возможно, вы ищете что-то вроде:
Это неявно вызовет метод ToString () для каждого из элементов в списке и объединит их.
источник
String.Concat()
достигнет того же самого лучше.Если вы хотите , чтобы включить элементы в списке в большую длинную строку, сделайте следующее:
String.Join("", myList)
. Некоторые старые версии фреймворка не позволяют вам передавать IEnumerable в качестве второго параметра, поэтому вам может потребоваться преобразовать ваш список в массив, вызвав .ToArray ().источник
Прямой ответ на ваш вопрос,
String.Join
как уже упоминали другие.Однако, если вам нужны некоторые манипуляции, вы можете использовать
Aggregate
:источник
Этот метод помог мне при попытке получить данные из текстового файла и сохранить их в массиве, а затем назначить их доступной строке.
Надеюсь, кто-то может помочь !!!!
источник
Кажется, это работает для меня.
источник
Все ответы выше НЕ работают для вложенных списков.
источник