将字符串列表转换为单个字符串

时间:2013-10-13 13:52:53

标签: c# string list

List<string> MyList = (List<string>)Session["MyList"];

MyList包含以下值:12 34 55 23

我尝试使用下面的代码,但值会消失。

string Something = Convert.ToString(MyList);

我还需要用逗号分隔每个值(&#34; ,&#34;)。

如何将List<string> Mylist转换为string

6 个答案:

答案 0 :(得分:38)

string Something = string.Join(",", MyList);

答案 1 :(得分:10)

试试这段代码:

var list = new List<string> {"12", "13", "14"};
var result = string.Join(",", list);
Console.WriteLine(result);

结果是:"12,13,14"

答案 2 :(得分:6)

或者,如果您关注性能,可以使用循环

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 ","

This Benchmark表明使用上述循环比String.Join()快了约16%(平均超过3次)。

答案 3 :(得分:5)

完全可以使用LINQ,并执行以下操作:

string finalString = collection.Aggregate("", (current, s) => current + (s + ","));

但是,为了纯粹的可读性,我建议使用循环版本或string.Join机制。

答案 4 :(得分:3)

你可以为此制作一个扩展方法,因此它也更具可读性:

public static class GenericListExtensions
{
    public static string ToString<T>(this IList<T> list)
    {
        return string.Join(",", list);
    }
}

然后你可以:

string Something = MyList.ToString<string>();

答案 5 :(得分:0)

我不得不在可接受的答案上增加一点点。没有它,Unity会抛出此错误:

cannot convert `System.Collections.Generic.List<string>' expression to type `string[]'

解决方案是使用.ToArray()

List<int> stringNums = new List<string>();
String.Join(",", stringNums.ToArray())