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?

SKJ
la source
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.

Richard Dalton
la source
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);
Sergey Berezovskiy
la source
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);
MuhammadHani
la source
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!

Rejwanul Reja
la source
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()));
Salim Latif Waigaonkar
la source
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.

Syed Qasim Abbas
la source
3

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

var result= String.Join(",", yourList);
Abdus Salam Azad
la source
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());
Gaurang Dhandhukiya
la source
1

Essayer

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

HTH

Geai
la source
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;
Ajeet Singh
la source
0

vous pouvez utiliser google-collections.jar qui a une classe utilitaire appelée Joiner

 String commaSepString=Joiner.on(",").join(lst);

ou

vous pouvez utiliser la classe StringUtils qui a une fonction appelée join.Pour utiliser la classe StringUtils, vous devez utiliser common-lang3.jar

String commaSepString=StringUtils.join(lst, ',');

pour référence, reportez-vous à ce lien http://techno-terminal.blogspot.in/2015/08/convert-collection-into-comma-separated.html

rassasier
la source
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 #

hitesh kumar
la source
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()));
ACJ
la source
0
categories = ['sprots', 'news'];
categoriesList = ", ".join(categories)
print(categoriesList)

Voici la sortie: sprots, actualités

sudharsanan r
la source
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);
Fateme Mirjalili
la source