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

Ozk*_*kan 69 c# asp.net

有没有快速的方法转换List<string>stringC#中的逗号分隔?

我这样做但也许有更快或更有效的方式?

List<string> ls = new List<string>();
ls.Add("one");
ls.Add("two");
string type = string.Join(",", ls.ToArray());
Run Code Online (Sandbox Code Playgroud)

PS:在这个网站上搜索过但大多数解决方案都是针对Java或Python的

Jon*_*eet 109

在.NET 4中,您不需要ToArray()调用 - string.Join重载是接受IEnumerable<T>或只是IEnumerable<string>.

在.NET 4之前有可能更有效的方法,但你真的需要它们吗?这实际上是您代码中的瓶颈吗?

可以迭代列表,计算最终大小,分配一个StringBuilder完全正确的大小,然后自己进行连接.这将避免额外的阵列正在修建的小原因-但它不会节省很多时间,这将是一个很大更多的代码.

  • string.Join(",",myList) (14认同)

Ant*_*haw 15

以下将导致以逗号分隔的列表.请务必包含using语句System.Linq

List<string> ls = new List<string>();
ls.Add("one");
ls.Add("two");
string type = ls.Aggregate((x,y) => x + "," + y);
Run Code Online (Sandbox Code Playgroud)

会产生一,二

如果您在逗号后需要空格,只需将最后一行更改为 string type = ls.Aggregate((x,y) => x + ", " + y);

  • -1:字符串连接的性能不会缩放 (2认同)
  • 感谢John,已在评论中注明:) (2认同)

use*_*er1 9

要扩展Jon Skeets,请回答以下代码.Net 4:

string myCommaSeperatedString = string.Join(",",ls);
Run Code Online (Sandbox Code Playgroud)