2013-10-13 21 views
5
List<string> MyList = (List<string>)Session["MyList"]; 

MyList contiene valori come: 12345523.Convertire una lista di stringhe ad una singola stringa

Ho provato a utilizzare il codice riportato di seguito, tuttavia i valori scompaiono.

string Something = Convert.ToString(MyList); 

Inoltre devo ciascun valore essere separati da una virgola (",").

Come convertire List<string> Mylist in string?

risposta

25
string Something = string.Join(",", MyList); 
8

Prova di questo codice:

var list = new List<string> {"12", "13", "14"}; 
var result = string.Join(",", list); 
Console.WriteLine(result); 

Il risultato è: "12,13,14"

2

È possibile effettuare un metodo di estensione per questo, in modo che sarà anche più leggibile:

public static class GenericListExtensions 
{ 
    public static string ToString<T>(this IList<T> list) 
    { 
     return string.Join(",", list); 
    } 
} 

E quindi è possibile:

string Something = MyList.ToString<string>(); 
6

Oppure, se sei preoccupato per le prestazioni, è possibile utilizzare un ciclo,

var myList = new List<string> { "11", "22", "33" }; 
var myString = ""; 
var sb = new System.Text.StringBuilder(); 

foreach (string s in myList) 
{ 
    sb.Append(s).Append(","); 
} 

myString = sb.Remove(sb.Length - 1, 1).ToString(); // Removes last "," 

This Benchmark dimostra che utilizzando il circuito di cui sopra è ~ 16% più veloce rispetto String.Join() (una media di oltre 3 piste).

+0

Non sapeva che un ciclo è più veloce di 'String.Join()'. Tuttavia, se sei davvero preoccupato per le prestazioni, non dovresti usare C# (o un altro linguaggio .NET). – ProgramFOX

5

interamente in alternativa si può usare LINQ, e fare come segue:

string finalString = collection.Aggregate("", (current, s) => current + (s + ",")); 

Tuttavia, per pura leggibilità, io suggerisco di usare la versione a ciclo, o il meccanismo di string.join.

Problemi correlati