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

use*_*820 12 c# string list

List<string> MyList = (List<string>)Session["MyList"];
Run Code Online (Sandbox Code Playgroud)

MyList包含如下值:12 34 55 23.

我尝试使用下面的代码,但值消失了.

string Something = Convert.ToString(MyList);
Run Code Online (Sandbox Code Playgroud)

我还需要用逗号(" ,")分隔每个值.

我怎样才能转换List<string> Myliststring

Pro*_*FOX 44

string Something = string.Join(",", MyList);
Run Code Online (Sandbox Code Playgroud)


MUG*_*G4N 11

试试这段代码:

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

结果是: "12,13,14"


Mis*_*sky 6

您可以为此创建一个扩展方法,这样它也更具可读性:

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

然后你可以:

string Something = MyList.ToString<string>();
Run Code Online (Sandbox Code Playgroud)


Sam*_*Sam 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 ","
Run Code Online (Sandbox Code Playgroud)

该基准测试表明,使用上述循环比String.Join()(平均3次运行)快约16%.


Fal*_*til 5

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

string finalString = collection.Aggregate("", (current, s) => current + (s + ","));
Run Code Online (Sandbox Code Playgroud)

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