Відповіді:
Можливо, ви намагаєтесь це зробити
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.Concat()
краще досягти того самого.
Якщо ви хочете перетворити елементи зі списку у велику довгу рядок, зробіть це: 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());
Сподіваємось, хтось може допомогти !!!!
всі відповіді вище НЕ працюють для вкладених списків.