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

MyList包含這樣的值:12345523轉換字符串列表到一個字符串

我嘗試使用下面的代碼,但值消失。

string Something = Convert.ToString(MyList); 

我還需要用逗號分隔每個值(「,」)。

如何將List<string> Mylist轉換爲string

回答

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

試試這個代碼:

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

結果是:"12,13,14"

2

可以彌補這方面的擴展方法,所以它也將更具可讀性:

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

然後你可以:

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

或者,如果你關心性能,你可以使用一個循環,

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表明,使用上述環路〜比String.Join()(平均超過3箇中運行)快16%。

+0

不知道一個循環比'String.Join()'快。但是,如果您真的關心性能,那麼您根本不應該使用C#(或其他.NET語言)。 – ProgramFOX

5

完全或者你可以使用LINQ,並做如下:

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

然而,對於純粹的可讀性,我建議使用任一回路的版本,或的string.join機制。