2013-02-19 12 views
111

mojego kodu jest jak poniżej:Konwersja do listy rozdzielonych przecinkami String

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

wyjściowa: 1,2,3,4,5

Co jest najbardziej prosty sposób konwertować List<uint> na ciąg znaków oddzielonych przecinkami?

+6

'String.Join' to wszystko, czego potrzebujesz. – asawyer

+6

'var csvString = String.Join (", ", lst);' powinien to zrobić. – Mithrandir

+2

Dla każdego, kto chce go ponownie otworzyć, jeśli nie jest zbyt zlokalizowany, jest duplikatem: http://stackoverflow.com/questions/799446/creating-a-comma-separated-list-from-iliststring-lub-ienumerablestring –

Odpowiedz

199

Ciesz się!

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

String.Join odbędzie listę jako drugi parametr i dołącz wszystkich elementów wykorzystujących ciąg przekazany jako pierwszy parametr w jednym ciągiem.

+9

In. NET 3.5 i niżej musisz jawnie przekonwertować swoją listę do tablicy za pomocą 'lst.ToArray()', ponieważ nie ma tam jeszcze bezpośredniego przeciążenia. – Anton

53

Można użyć String.Join sposób połączyć elementy:

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

Korzystanie String.Join

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

Korzystanie LinqAggregation

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

Mam listę typu int32. kiedy używam funkcji agregacji, o której wspomniałeś, mówi "Nie można przekonwertować wyrażenia lambda na delegowanie typu" System.Func ", ponieważ niektóre typy zwracane w bloku nie są niejawnie przekształcalne na typ zwracania delegatów" i \t "Nie można niejawnie przekonwertować typu 'string' na 'int' " – Hari

+1

@Hari Musisz przekonwertować go na wartości ciągów przed aggragowaniem na łańcuch. Możesz zrobić coś takiego: list.Select (x => string.Format ("{0}: {1}", x.Key, x.Value)). Aggregate ((a, x) => a + " , "+ x); – bets

1

Spróbuj

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

HTH

8

Postępuj następująco:

 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 

      } 

użyłem w MVC Razor View do oceny i wydrukować wszystkie role rozdzielając je przecinkami.

2

Możesz posłużyć się poniższym przykładem, aby uzyskać z tablicy ciąg znaków oddzielonych przecinkami.

Przykład:

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

Można użyć do tego string.join jeśli używasz .NET ramy> 4.0.

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

Możemy spróbować jak to osobny wykaz enties przecinkiem

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

Jeśli masz kolekcję wskazówki:

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

Możesz użyć string.Join, aby uzyskać ciąg znaków:

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