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

问题描述 投票:0回答:7
List<string> MyList = (List<string>)Session["MyList"];

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

我尝试使用下面的代码,但是这些值消失了。

string Something = Convert.ToString(MyList);

我还需要用逗号分隔每个值(“

,
”)。

如何将

List<string> Mylist
转换为
string

c# string list
7个回答
164
投票
string Something = string.Join(",", MyList);

20
投票

试试这个代码:

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

结果是:

"12,13,14"


8
投票

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

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

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


8
投票

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

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

此基准测试显示,使用上述循环比

String.Join()
(3次运行的平均值)快约16%。


7
投票

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

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

然后你可以:

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

2
投票

我必须在已接受的答案上添加一些额外的内容。没有它,Unity 会抛出这个错误:

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

解决方案是使用

.ToArray()

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

0
投票

试试这个

var list = new List<string> {"12", "13", "14"};
var listContentString = String.join(",", list);
© www.soinside.com 2019 - 2024. All rights reserved.