将List <int>转换为逗号分隔值的字符串

Ciu*_*paz 20 c# list

有一个List<int>整数(例如:) 1 - 3 - 4我怎么能用这种类型的字符串转换它?

例如,输出应为:

string values = "1,3,4";
Run Code Online (Sandbox Code Playgroud)

Mey*_*sam 89

var nums = new List<int> {1, 2, 3};
var result = string.Join(", ", nums);
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这在.NET 3.5及更早版本中不起作用(第二个参数必须是字符串[]).见Albin Sunnanbo的回答. (4认同)

Alb*_*nbo 19

var ints = new List<int>{1,3,4};
var stringsArray = ints.Select(i=>i.ToString()).ToArray();
var values = string.Join(",", stringsArray);
Run Code Online (Sandbox Code Playgroud)

  • 在.NET 4中,[`String.Join`](http://msdn.microsoft.com/en-us/library/dd992421.aspx)有一个带有"IEnumerable <T>"的重载,所以这可以在没有中间数组(这个重载在每个输入元素上调用`ToString()`:`string.Join(",",ints)`. (4认同)

Mar*_*n B 12

另一种解决方案是使用Aggregate.众所周知,这比其他提供的解决方案要慢得多!

var ints = new List<int>{1,2,3,4};
var strings =
            ints.Select(i => i.ToString(CultureInfo.InvariantCulture))
                .Aggregate((s1, s2) => s1 + ", " + s2);
Run Code Online (Sandbox Code Playgroud)

请参阅下面的注释,为什么不应该使用它.使用String.JoinStringBuilder改为.

  • -1众所周知,创建这样的字符串的解决方案很糟糕(特别是当列表很长时).String.Join或StringBuilder是要走的路.对于Stack Overflow而言,低质量的OP甚至不知道如何接受最佳答案. (6认同)
  • @GertArnold我同意你的看法.只想展示另一种解决方案而忘记提及任何表现.我试图删除这个答案,但我不能.我会更新答案,不要使用它. (5认同)