Как преобразовать список в строку в С#?
Когда я выполняю toString
в объекте List, я получаю:
System.Collections.Generic.List`1 [System.String]
Как преобразовать список в строку в С#?
Когда я выполняю toString
в объекте List, я получаю:
System.Collections.Generic.List`1 [System.String]
Может быть, вы пытаетесь сделать
string combindedString = string.Join( ",", myList.ToArray() );
Вы можете заменить "," на то, на что хотите разделить элементы в списке.
Изменить: как упоминание в комментариях, вы также можете сделать
string combindedString = string.Join( ",", myList);
Ссылка:
Join<T>(String, IEnumerable<T>)
Concatenates the members of a collection, using the specified separator between each member.
Я собираюсь пойти со своим чувством кишки и предположить, что вы хотите объединить результат вызова ToString
для каждого элемента списка.
var result = string.Join(",", list.ToArray());
Вы можете использовать string.Join
:
List<string> list = new List<string>()
{
"Red",
"Blue",
"Green"
};
string output = string.Join(Environment.NewLine, list.ToArray());
Console.Write(output);
Результат будет:
Red
Blue
Green
В качестве альтернативы Environment.NewLine
вы можете заменить его строковым разделителем на ваш выбор.
Если вам нужно что-то немного более сложное, чем простое соединение, вы можете использовать LINQ, например.
var result = myList.Aggregate((total, part) => total + "(" + part.ToLower() + ")");
Возьмем [ "A", "B", "C" ] и произведите "(a) (b) (c)"
String.Join(" ", myList)
или String.Join(" ", myList.ToArray())
. Первый аргумент - разделитель между подстроками.
var myList = new List<String> { "foo","bar","baz"};
Console.WriteLine(String.Join("-", myList)); // prints "foo-bar-baz"
В зависимости от вашей версии .NET вам может потребоваться сначала использовать ToArray() в списке.
У вас есть List<string>
- поэтому, если вы хотите, чтобы они были объединены, что-то вроде
string s = string.Join("", list);
будет работать (по крайней мере, в .NET 4.0). Первым параметром является разделитель. Таким образом, вы также можете использовать запятую и т.д.
Вы также можете посмотреть, как использовать StringBuilder для выполнения конкатенаций, а не для создания списка.
Метод .ToString()
для ссылочных типов обычно возвращается обратно к System.Object.ToString()
, если вы не переопределяете его в производном типе (возможно, используя методы расширения для встроенных типов). Поведение по умолчанию для этого метода заключается в том, чтобы вывести имя типа, на который он вызвал. Итак, ожидаемое поведение ожидается.
Вы можете попробовать что-то вроде string.Join(", ", myList.ToArray());
для достижения этого. Это дополнительный шаг, но его можно поместить в метод расширения на System.Collections.Generic.List<T>
, чтобы сделать его немного проще. Что-то вроде этого:
public static class GenericListExtensions
{
public static string ToString<T>(this IList<T> list)
{
return string.Join(", ", list);
}
}
(Обратите внимание, что это свободный и непроверенный код. В настоящий момент у меня нет компилятора, поэтому вы захотите немного поэкспериментировать с ним.)
Трудно сказать, но, возможно, вы ищете что-то вроде:
var myString = String.Join(String.Empty, myList.ToArray());
Это косвенно вызовет метод ToString() для каждого из элементов в списке и объединит их.
Если вы хотите превратить элементы в список в большую длинную строку, сделайте следующее: String.Join("", myList)
. Некоторые старые версии фреймворка не позволяют передавать IEnumerable в качестве второго параметра, поэтому вам может понадобиться преобразовать ваш список в массив, вызвав .ToArray().
Прямой ответ на ваш вопрос String.Join
, как уже упоминали другие.
Однако, если вам нужны некоторые манипуляции, вы можете использовать Aggregate
:
List<string> employees = new List<string>();
employees.Add("e1");
employees.Add("e2");
employees.Add("e3");
string employeesString = "'" + employees.Aggregate((x, y) => x + "','" + y) + "'";
Console.WriteLine(employeesString);
Console.ReadLine();
Этот метод помог мне при попытке извлечь данные из текстового файла и сохранить их в массиве, а затем назначить их доступной строке.
string[] lines = File.ReadAllLines(Environment.CurrentDirectory + "\\Notes.txt");
string marRes = string.Join(Environment.NewLine, lines.ToArray());
Надеюсь, кто-то может помочь !!!!