Convertir la liste en chaîne séparée par des virgules


158

Mon code est comme ci-dessous:

public void ReadListItem()
{
     List<uint> lst = new List<uint>() { 1, 2, 3, 4, 5 };
     string str = string.Empty;
     foreach (var item in lst)
         str = str + item + ",";

     str = str.Remove(str.Length - 1);
     Console.WriteLine(str);
}

Production: 1,2,3,4,5

Quel est le moyen le plus simple de convertir le List<uint>en une chaîne séparée par des virgules?


9
String.Joinest tout ce dont vous avez besoin.
asawyer

9
var csvString = String.Join(",", lst);devrait le faire.
Mithrandir

2
Pour tous ceux qui veulent le rouvrir, s'il n'est pas trop localisé, c'est un doublon: stackoverflow.com/questions/799446/...
Tim Schmelter

Réponses:


320

Prendre plaisir!

Console.WriteLine(String.Join(",", new List<uint> { 1, 2, 3, 4, 5 }));

Premier paramètre: ","
deuxième paramètre:new List<uint> { 1, 2, 3, 4, 5 })

String.Join prendra une liste comme deuxième paramètre et joindra tous les éléments à l'aide de la chaîne passée comme premier paramètre en une seule chaîne.


11
Dans .NET 3.5 et les versions antérieures, vous devez explicitement convertir votre liste en tableau avec lst.ToArray(), car il n'y a pas encore de surcharge directe.
Anton

69

Vous pouvez utiliser la méthode String.Join pour combiner des éléments:

var str = String.Join(",", lst);

Cela ne fonctionne pas pour moi. Il produit le nom de la collection plutôt que les objets de la liste.
Rani Radcliff

25

En utilisant String.Join

string.Join<string>(",", lst );

En utilisant Linq Aggregation

lst .Aggregate((a, x) => a + "," + x);

1
J'ai une liste de type int32. lorsque j'utilise la fonction d'agrégation que vous avez mentionnée, il est dit "Impossible de convertir l'expression lambda en type de délégué 'System.Func <int, int, int>' car certains des types de retour dans le bloc ne sont pas implicitement convertibles en type de retour délégué" et "Impossible de convertir implicitement le type 'string' en 'int'"
Hari

1
@Hari Vous devez le convertir en valeurs de chaîne avant de l'agréger en chaîne. Vous pouvez donc faire quelque chose comme ceci: list.Select (x => string.Format ("{0}: {1}", x.Key, x.Value)). Aggregate ((a, x) => a + " , "+ x);
paris

11

Si vous avez une collection d'entiers:

List<int> customerIds= new List<int>() { 1,2,3,3,4,5,6,7,8,9 };  

Vous pouvez utiliser string.Joinpour obtenir une chaîne:

var result = String.Join(",", customerIds);

Prendre plaisir!


9

Suivez ceci:

       List<string> name = new List<string>();

        name.Add("Latif");
        name.Add("Ram");
        name.Add("Adam");
        string nameOfString = (string.Join(",", name.Select(x => x.ToString()).ToArray()));

4
          @{  var result = string.Join(",", @user.UserRoles.Select(x => x.Role.RoleName));
              @result

           }

J'ai utilisé dans MVC Razor View pour évaluer et imprimer tous les rôles séparés par des virgules.


3

Vous pouvez utiliser String.Join pour cela si vous utilisez .NET Framework> 4.0.

var result= String.Join(",", yourList);

2

Vous pouvez consulter l'exemple ci-dessous pour obtenir un tableau de chaînes séparées par des virgules à partir de la liste.

Exemple:

List<string> testList= new List<string>();
testList.Add("Apple"); // Add string 1
testList.Add("Banana"); // 2
testList.Add("Mango"); // 3
testList.Add("Blue Berry"); // 4
testList.Add("Water Melon"); // 5

string JoinDataString = string.Join(",", testList.ToArray());

1

Essayer

Console.WriteLine((string.Join(",", lst.Select(x=>x.ToString()).ToArray())));

HTH


1

Nous pouvons essayer comme ceci de séparer les entrées de liste par une virgule

string stations = 
haul.Routes != null && haul.Routes.Count > 0 ?String.Join(",",haul.Routes.Select(y => 
y.RouteCode).ToList()) : string.Empty;


0
static void Main(string[] args){          
List<string> listStrings = new List<string>() { "C#", "Asp.Net", "SQL Server", "PHP", "Angular" };  
string CommaSeparateString = GenerateCommaSeparateStringFromList(listStrings);  
Console.Write(CommaSeparateString);  
Console.ReadKey();}
private static string GenerateCommaSeparateStringFromList(List<string> listStrings){return String.Join(",", listStrings);}

Convertir une liste de chaînes en chaînes séparées par des virgules C #


0

vous pouvez également remplacer ToString () si votre élément de liste contient plusieurs chaînes

public class ListItem
{

    public string string1 { get; set; }

    public string string2 { get; set; }

    public string string3 { get; set; }

    public override string ToString()
    {
        return string.Join(
        ","
        , string1 
        , string2 
        , string3);

    }

}

pour obtenir une chaîne csv:

ListItem item = new ListItem();
item.string1 = "string1";
item.string2 = "string2";
item.string3 = "string3";

List<ListItem> list = new List<ListItem>();
list.Add(item);

string strinCSV = (string.Join("\n", list.Select(x => x.ToString()).ToArray()));

0
categories = ['sprots', 'news'];
categoriesList = ", ".join(categories)
print(categoriesList)

Voici la sortie: sprots, actualités


0

Vous pouvez séparer les entités de liste par une virgule comme ceci:

//phones is a list of PhoneModel
var phoneNumbers = phones.Select(m => m.PhoneNumber)    
                    .Aggregate(new StringBuilder(),
                        (current, next) => current.Append(next).Append(" , ")).ToString();

// Remove the trailing comma and space
if (phoneNumbers.Length > 1)
    phoneNumbers = phoneNumbers.Remove(phoneNumbers.Length - 2, 2);
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.