2010-06-28 120 views
35

可能重复:
most elegant way to return a string from List<int>转换列表<int>为分隔字符串列表

我不知道最简单的方法来做到这一点。我只是想添加一个;每个值之间并将其作为一个字符串吐出。我没有看到你可以用ToString()来做到这一点。我将不得不循环并创建一个stringbuilder并追加&添加一个“;”。

+0

遗憾是列表没有列出 PositiveGuy 2010-06-28 19:15:40

+0

我需要一个列表转换为delmited字符串。所以“123; 343; 222” – PositiveGuy 2010-06-28 19:17:09

+0

@coffeeaddict:可以编辑你的原始问题。这比希望人们阅读评论中的所有细节更好。 – DOK 2010-06-28 19:20:24

回答

84

修订使用List<int>,而不是List<string>

使用string.Join

List<int> data = ..; 
var result = string.Join(";", data); // (.NET 4.0 only) 
var result = string.Join(";", data.Select(x => x.ToString()).ToArray()); // (.NET 3.5) 
+0

对不起,我改变了这个问题,我的错误 – PositiveGuy 2010-06-28 19:16:01

+0

我已经更新了匹配的答案。 – 2010-06-28 19:17:56

+0

+1 .Net 4枚举字符串。加入 – 2010-06-28 22:19:58

6
string.Join(";", myList.ToArray()); 
4

只需使用join

string combinedString = String.Join(";", arrayName); 
3
List<String> list = new List<String>() { "A", "B", "C", "D", "E" }; 
String joindString1 = String.Join(";", list.ToArray()); 
String joindString2 = list.Aggregate((s1, s2) => s1 + ";" + s2); 
2

您也可以使用Enumerable.Aggregate,它可以提供额外的灵活性。

var data = new List<int> { 1,2,3 }; 
var sb = new StringBuilder(100); 

// do some other stuff with sb 

sb = data.Aggregate(sb, (b, d) => b.Append(d).Append(';')); 
if(data.Count > 0) sb.Length--; 

//do some more stuff with sb 

var str = sb.ToString();