Converting a List<int> to a comma separated string

C#Collections

C# Problem Overview


Is there a way to take a List and convert it into a comma separated string?

I know I can just loop and build it, but somehow I think some of you guys a more cool way of doing it?

I really want to learn these types of 'tricks', so please explain or link to the docs on the method you use.

C# Solutions


Solution 1 - C#

List<int> list = ...;
string.Join(",", list.Select(n => n.ToString()).ToArray())

Solution 2 - C#

Simple solution is

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

I used it just now in my code, working funtastic.

Solution 3 - C#

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

Solution 4 - C#

For approximately one gazillion solutions to a slightly more complicated version of this problem -- many of which are slow, buggy, or don't even compile -- see the comments to my article on this subject:

https://docs.microsoft.com/en-us/archive/blogs/ericlippert/comma-quibbling

and the StackOverflow commentary:

https://stackoverflow.com/questions/788535/eric-lipperts-challenge-comma-quibbling-best-answer

Solution 5 - C#

For extra coolness I would make this an extension method on IEnumerable<T> so that it works on any IEnumerable:

public static class IEnumerableExtensions {
  public static string BuildString<T>(this IEnumerable<T> self, string delim = ",") {
    return string.Join(delim, self)        
  }
}

Use it as follows:

List<int> list = new List<int> { 1, 2, 3 };
Console.WriteLine(list.BuildString(", "));

Solution 6 - C#

My "clever" entry:

        List<int> list = new List<int> { 1, 2, 3 };
        StringBuilder sb = new StringBuilder();
        var y = list.Skip(1).Aggregate(sb.Append(x.ToString()),
                    (sb1, x) =>  sb1.AppendFormat(",{0}",x));

        // A lot of mess to remove initial comma
        Console.WriteLine(y.ToString().Substring(1,y.Length - 1));

Just haven't figured how to conditionally add the comma.

Solution 7 - C#

Seems reasonablly fast.

IList<int> listItem = Enumerable.Range(0, 100000).ToList();
var result = listItem.Aggregate<int, StringBuilder, string>(new StringBuilder(), (strBuild, intVal) => { strBuild.Append(intVal); strBuild.Append(","); return strBuild; }, (strBuild) => strBuild.ToString(0, strBuild.Length - 1));

Solution 8 - C#

you can use, the System.Linq library; It is more efficient:

using System.Linq;
string str =string.Join(",", MyList.Select(x => x.NombreAtributo));

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionmrblahView Question on Stackoverflow
Solution 1 - C#Pavel MinaevView Answer on Stackoverflow
Solution 2 - C#Nitin DawareView Answer on Stackoverflow
Solution 3 - C#Yuriy FaktorovichView Answer on Stackoverflow
Solution 4 - C#Eric LippertView Answer on Stackoverflow
Solution 5 - C#cdigginsView Answer on Stackoverflow
Solution 6 - C#LarsenalView Answer on Stackoverflow
Solution 7 - C#GregoryView Answer on Stackoverflow
Solution 8 - C#user10304366View Answer on Stackoverflow