Подтвердить что ты не робот

Объединение всего содержимого списка в одну строку в С#

Как объединить все содержимое списка в одной строке в С#?

4b9b3361

Ответ 1

Поиск для этого:

List<string> list = new List<string>(); // { "This ", "is ", "your ", "string!"};
list.Add("This ");
list.Add("is ");
list.Add("your ");
list.Add("string!");

string concat = String.Join(" ", list.ToArray());

Ответ 2

Вы можете использовать функцию агрегирования для объединения всех элементов списка.

Ниже приведен пример, чтобы объединить все элементы списка с запятой ","

string s = list.Aggregate((i, j) => i + "," + j).ToString();

Ответ 3

Если вам нужно преобразовать элементы списка во время соединения, вы можете использовать LINQ:

string.Join(", ", mylist.Select(z => MyMethod(z)));

Пример:

IEnumerable<string> mylist = new List<string>() {"my", "cool", "list"};
string joined = string.Join(", ", mylist.Select(z => MyMethod(z)));


public string MyMethod(string arg)
{
    return arg.ToUpper();
}

Ответ 4

Вот простое решение с StringBuilder:

        var sb = new StringBuilder();
        strings.ForEach(s => sb.Append(s));
        var combinedList = sb.ToString();

Ответ 5

Что-то вроде этого:

    List<String> myStrings = new List<string>() { "string1", "string2", "string3" };
    StringBuilder concatenatedString = new StringBuilder();
    foreach (String myString in myStrings)
    {
        concatenatedString.Append(myString);
    }
    Console.WriteLine(concatenatedString.ToString());

Ответ 6

public static string ToString<T>(this IEnumerable<T> source, string delimiter)
{
    string d = String.Empty;
    var result = new StringBuilder();
    foreach(T item in source)
    {
        result.Append(d).Append(item.ToString());
        d = delimiter;
    }
    return result.ToString();
}

И перегрузка для необязательного лучшего преобразования строк отдельных значений:

public static string ToString<T>(this IEnumerable<T> source, string delimiter, Func<T, string> toString)
{
    string d = String.Empty;
    var result = new StringBuilder();
    foreach(T item in source)
    {
        result.Append(d).Append(toString(item));
        d = delimiter;
    }
    return result.ToString();
}

Ответ 7

Вот версия, которая разделяет элементы, используя два пространства, реализованные с помощью LINQ:

var s = list.Aggregate(new StringBuilder(), (sb, current) => 
  sb.AppendFormat("{0}  ", current)).ToString();

Метод Aggregate передает StringBuilder (как sb) текущий элемент списка (как current) в выражение лямбда, которое может делать все, что ему нужно - например, добавить текущую строку из список StringBuilder с использованием некоторого форматирования, указанного в элементе выражения лямбда.

Ответ 8

Попробуйте следующее:

request.AllFacilityId = request.FacilityIdList.Aggregate((i, j) => i + "," + j);