een lijst omzetten & LT; INT & GT; naar een door komma’s gescheiden string

Is er een manier om een ​​lijst te maken en deze om te zetten in een door komma’s gescheiden string?

Ik weet dat ik het gewoon kan lijden en bouwen, maar op de een of andere manier denk ik dat sommigen van jullie een meer coole manier om het te doen?

Ik wil echt dit soort ‘trucs’ leren, dus leg uit of link of link naar de documenten op de methode die u gebruikt.


Antwoord 1, Autoriteit 100%

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

Antwoord 2, Autoriteit 63%

Eenvoudige oplossing is

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

Ik heb het nu net in mijn code gebruikt, funtastic.


Antwoord 3, Autoriteit 5%

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

Antwoord 4, Autoriteit 3%

Voor ongeveer één gazillion-oplossingen voor een iets gecompliceerde versie van dit probleem – waarvan vele traag, buggy, of niet eens compileren – zie de opmerkingen aan mijn artikel over dit onderwerp:

https://docs.microsoft.com/en -US / Archive / Blogs / Ericlippert / Comma-Quibling

en het Stackoverflow-commentaar:

Eric Lippert’s Challenge “Comma-Quibling”, het beste antwoord?


Antwoord 5, Autoriteit 2%

Voor extra koelte zou ik dit een verlengingsmethode maken op Ienumerable & LT; T & GT; Zodat het werkt op elk IEnumerable:

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

Gebruik het als volgt:

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

Antwoord 6

lijkt redelijk vast.

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));

Antwoord 7

Mijn “slimme” invoer:

       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));

heb gewoon niet bedacht hoe de komma’s voorwaardelijk voegt.


Antwoord 8

U kunt gebruiken, de System.LinQ-bibliotheek; Het is efficiënter:

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

Other episodes