Convert `List<string>` to comma-separated string

78

Is there a fast way to convert List<string> to a comma-separated string in C#?

I do it like this but Maybe there is a faster or more efficient way?

List<string> ls = new List<string>();
ls.Add("one");
ls.Add("two");
string type = string.Join(",", ls.ToArray());

PS: Searched on this site but most solutions are for Java or Python

This question is tagged with c# asp.net

~ Asked on 2011-12-21 16:40:47

The Best Answer is


118

In .NET 4 you don't need the ToArray() call - string.Join is overloaded to accept IEnumerable<T> or just IEnumerable<string>.

There are potentially more efficient ways of doing it before .NET 4, but do you really need them? Is this actually a bottleneck in your code?

You could iterate over the list, work out the final size, allocate a StringBuilder of exactly the right size, then do the join yourself. That would avoid the extra array being built for little reason - but it wouldn't save much time and it would be a lot more code.

~ Answered on 2011-12-21 16:42:49


15

The following will result in a comma separated list. Be sure to include a using statement for System.Linq

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

will yield one,two

if you need a space after the comma, simply change the last line to string type = ls.Aggregate((x,y) => x + ", " + y);

~ Answered on 2011-12-21 16:54:39


Most Viewed Questions: