2013-02-19 4 views
111

Mon code est comme ci-dessous:Liste en chaîne séparées par des virgules

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

Sortie: 1,2,3,4,5

Quelle est la façon la plus simple de convertir la List<uint> en une chaîne séparée par des virgules?

+6

'String.Join' est tout ce dont vous avez besoin. – asawyer

+6

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

+2

Pour tous ceux qui veulent rouvrir ceci, si ce n'est pas trop localisé c'est un doublon: http://stackoverflow.com/questions/799446/creating-a-comma-separated-list-from-iliststring-or-ienumerablestring –

Répondre

199

Profitez-en!

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

String.Join prendra une liste en tant que second paramètre et rejoindre tous les éléments en utilisant la chaîne passée comme premier paramètre en une seule chaîne.

+9

In. NET 3.5 et ci-dessous vous devez convertir explicitement votre liste en tableau avec 'lst.ToArray()', car il n'y a pas encore de surcharge directe. – Anton

53

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

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

En utilisant String.Join

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

En utilisant LinqAggregation

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

J'ai une liste de type int32. quand j'utilise la fonction d'agrégat que vous avez mentionnée, elle indique "Impossible de convertir l'expression lambda en type de délégué 'System.Func ' car certains types de retour dans le bloc ne sont pas implicitement convertibles en type de retour délégué" et \t "Impossible de convertir implicitement le type 'string' à 'int' " – Hari

+1

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

1

Essayez

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

HTH

8

Suivre 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())); 
2
  @{ var result = string.Join(",", @user.UserRoles.Select(x => x.Role.RoleName)); 
       @result 

      } 

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

0

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

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

ou

vous pouvez utiliser la classe StringUtils qui a fonction appelée join.To faire usage de classe StringUtils , vous devez utiliser le bon-lang3.jar

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

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

2

Vous pouvez consulter l'exemple ci-dessous pour obtenir un tableau de chaînes séparé par des virgules 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

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

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

Nous pouvons essayer comme cela enties liste séparée 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);} 

Convert a list of string to comma separated string C#

4

Si vous avez une collection de ints:

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

Vous pouvez utiliser string.Join pour obtenir une chaîne:

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