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



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



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




781   10  

10 ответов:

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

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

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

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

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

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

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

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

вы могли бы использовать строку.Присоединяйтесь:

List<string> list = new List<string>()
                                    {
                                        "Red",
                                        "Blue",
                                        "Green"
                                    };

string output = string.Join(Environment.NewLine, list.ToArray());

Console.Write(output);

результат будет такой:

Red

Blue

Green

как альтернатива окружающая среда.Новая строка вы можете заменить его строковым разделителем строк по вашему выбору.

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

The .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);
    }
}

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

у вас List<string> - Так что если вы хотите, чтобы они сцеплены, что-то вроде

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

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

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

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

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();

Comments

    Ничего не найдено.