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

mrb*_*lah 102 c# collections

有没有办法获取List并将其转换为逗号分隔的字符串?

我知道我可以循环并构建它,但不知怎的,我认为你们中的一些人更酷的做法呢?

我真的想学习这些类型的"技巧",所以请解释或链接到您使用的方法的文档.

Pav*_*aev 179

List<int> list = ...;
string.Join(",", list.Select(n => n.ToString()).ToArray())
Run Code Online (Sandbox Code Playgroud)

  • Larsenal:但是StringBuilder.Append(Int32)无论如何都在整数内部调用ToString.StringBuilder不会神奇地避免为每个元素分配字符串的成本; 它只是把它看得很清楚. (9认同)
  • 聪明但缓慢而臃肿,因为它为每个元素分配一个字符串.使用StringBuilder会更有效率. (5认同)
  • 我认为Steven指的是n.ToString()部分而不是String.Join. (5认同)
  • 从我在网上看到的(快速搜索)String.Join比使用StringBuilder更快. (3认同)
  • http://stackoverflow.com/questions/585860/string-join-vs-stringbuilder-which-is-faster,你错了史蒂文 (3认同)
  • @johnny5 因为当涉及大 n 时,o(n2) 有时会将微观变成宏观...... (2认同)

小智 96

简单的解决方案

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

我刚刚在我的代码中使用它,工作得很好.

  • 这是一种比公认的答案更好的方法。使用这种方法,您不必导入 Linq,而且速度更快。 (2认同)

Yur*_*ich 9

List<int> list = new List<int> { 1, 2, 3 };
Console.WriteLine(String.Join(",", list.Select(i => i.ToString()).ToArray()));
Run Code Online (Sandbox Code Playgroud)


Eri*_*ert 6

对于这个问题稍微复杂一点的大约一个解决方案 - 其中许多是缓慢的,错误的,或者甚至不编译 - 请参阅我关于这个主题的文章的评论:

http://blogs.msdn.com/ericlippert/archive/2009/04/15/comma-quibbling.aspx

和StackOverflow评论:

Eric Lippert挑战"逗号 - 狡辩",最佳答案?