Ответ 1
string Something = string.Join(",", MyList);
List<string> MyList = (List<string>)Session["MyList"];
MyList
содержит такие значения, как: 12
34
55
23
.
Я попытался использовать код ниже, однако значения исчезают.
string Something = Convert.ToString(MyList);
Мне также нужно, чтобы каждое значение разделялось запятой ( ",
" ).
Как преобразовать List<string> Mylist
в string
?
string Something = string.Join(",", MyList);
Попробуйте этот код:
var list = new List<string> {"12", "13", "14"};
var result = string.Join(",", list);
Console.WriteLine(result);
Результат: "12,13,14"
Или, если вас беспокоит производительность, вы можете использовать цикл,
var myList = new List<string> { "11", "22", "33" };
var myString = "";
var sb = new System.Text.StringBuilder();
foreach (string s in myList)
{
sb.Append(s).Append(",");
}
myString = sb.Remove(sb.Length - 1, 1).ToString(); // Removes last ","
Этот контрольный показатель показывает, что использование вышеприведенного цикла на ~ 16% быстрее, чем String.Join()
(усредненное за 3 прогона).
В общем случае вы можете использовать LINQ и выполнять следующие действия:
string finalString = collection.Aggregate("", (current, s) => current + (s + ","));
Однако для чистой читаемости я предлагаю использовать либо версию цикла, либо механизм string.Join.
Вы можете сделать для этого метод расширения, поэтому он также будет более читабельным:
public static class GenericListExtensions
{
public static string ToString<T>(this IList<T> list)
{
return string.Join(",", list);
}
}
И затем вы можете:
string Something = MyList.ToString<string>();
Мне пришлось добавить дополнительный бит над принятым ответом. Без этого Unity выкинула эту ошибку:
cannot convert 'System.Collections.Generic.List<string>' expression to type 'string[]'
Решение было использовать .ToArray()
List<int> stringNums = new List<string>();
String.Join(",", stringNums.ToArray())