it-swarm-ru.tech

Преобразовать список в строку в C #

Как мне преобразовать список в строку в C #?

Когда я выполняю toString для объекта List, я получаю:

System.Collections.Generic.List`1 [System.String]

155
IAdapter

Может быть, вы пытаетесь сделать

string combindedString = string.Join( ",", myList.ToArray() );

Вы можете заменить "," тем, на что хотите разделить элементы в списке.

305
Øyvind Bråthen

Я собираюсь пойти с моим внутренним чувством и предположить, что вы хотите объединить результат вызова ToString для каждого элемента списка.

var result = string.Join(",", list.ToArray());
50
ChaosPandion

Вы можете использовать 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 , вы можете заменить его строковым разделителем на ваш выбор.

15
eandersson

Если вы хотите что-то более сложное, чем простое объединение, вы можете использовать LINQ, например.

var result = myList.Aggregate((total, part) => total + "(" + part.ToLower() + ")");

Возьму ["A", "B", "C"] и произведу "(a) (b) (c)"

14
James Gaunt

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 () в списке.

13
Markus Johnsson

Метод .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);
    }
}

(Обратите внимание, что это свободный и непроверенный код. На данный момент у меня нет под рукой компилятора. Поэтому вы захотите немного поэкспериментировать с ним.)

8
David

У вас есть List<string> - поэтому, если вы хотите, чтобы они были объединены, что-то вроде

string s = string.Join("", list);

будет работать (по крайней мере, в .NET 4.0). Первый параметр - это разделитель. Таким образом, вы также можете разделять запятыми и т.д.

Возможно, вы захотите использовать StringBuilder для выполнения конкатенации, а не для формирования списка.

8
Marc Gravell

Трудно сказать, но, возможно, вы ищете что-то вроде:

var myString = String.Join(String.Empty, myList.ToArray());

Это неявно вызовет метод ToString () для каждого из элементов в списке и объединит их.

3
Daniel Schaffer

Если вы хотите превратить элементы в списке в большую длинную строку, сделайте это: String.Join("", myList). Некоторые старые версии фреймворка не позволяют вам передавать IEnumerable в качестве второго параметра, поэтому вам может потребоваться преобразовать ваш список в массив, вызвав .ToArray ().

2
mattmc3

Прямой ответ на ваш вопрос 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();
1
Lijo

Этот метод помог мне при попытке извлечь данные из текстового файла и сохранить их в массиве, а затем присвоить их доступной строке.

string[] lines = File.ReadAllLines(Environment.CurrentDirectory + "\\Notes.txt");  
string marRes = string.Join(Environment.NewLine, lines.ToArray());

Надеюсь, кто-то может помочь !!!!

0
PatsonLeaner