Как объединить все содержимое списка в одной строке в С#?
Объединение всего содержимого списка в одну строку в С#
Ответ 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);