2009-10-07 63 views

回答

16
IList<int> list = new List<int>(new int[] { 1, 2, 3 }); 
    Console.WriteLine(string.Join(",", list.Select(i => i.ToString()).ToArray())); 
+0

不起作用。 ForEach()在列表上定義,而不是IList 。 – 2009-10-07 00:58:59

+0

這是我的錯誤,更正 – 2009-10-07 00:59:22

+0

這是錯的無論如何,不​​知道爲什麼我寫了ForEach ... – 2009-10-07 01:00:06

5

你可以這樣做:

// Given: IList<int> collection; 

string commaSeparatedInts = string.Join(",",collection.Select(i => i.ToString()).ToArray()); 
3

這將做到這一點

IList<int> strings = new List<int>(new int[] { 1,2,3,4 }); 
string[] myStrings = strings.Select(s => s.ToString()).ToArray(); 
string joined = string.Join(",", myStrings); 

或完全使用LINQ

string aggr = strings.Select(s=> s.ToString()).Aggregate((agg, item) => agg + "," + item); 
3
// list = IList<MyObject> 

var strBuilder = new System.Text.StringBuilder(); 

foreach(var obj in list) 
{ 
    strBuilder.Append(obj.ToString()); 
    strBuilder.Append(","); 
} 

strBuilder = strBuilder.SubString(0, strBuilder.Length -1); 
return strBuilder.ToString(); 
+1

一個不錯的選擇,我總是發現StringBuilder是一個更快的串接。如果列表的大小很大,特別有用! – 2009-10-07 01:05:38

+0

StringBuilder.SubString不存在,你想要的是StringBuilder.ToString(int startIndex,int length) – Trillian 2009-10-07 01:26:56

0
List<int> intList = new List<int>{1,234,2,324,324,2}; 
var str = intList.Select(i => i.ToString()).Aggregate((i1,i2) => string.Format("{0},{1}",i1,i2)); 
Console.WriteLine(str); 
+0

如果投票人回答投票的答案會留下評論,說明投票的原因,這將會有所幫助。 這是一個完全合法的解決方案! – 2009-10-07 03:38:05

+0

是的,合法的,只是不是最簡單的方法。排名系統只是爲了獲得最佳答案。 – 2009-10-07 06:13:07

+0

我會想象一個答案只有在不正確,不準確或缺乏細節的情況下才會被選中。這裏使用LINQ發佈的大多數答案不一定是「簡單的」! – 2009-10-08 02:31:48

0

mstrickland對使用字符串生成器有一個好主意,因爲它的速度比較大。但是,您不能將stringbuilder設置爲字符串。試試這個。

var strBuilder = new StringBuilder(); 

    foreach (var obj in list) 
    { 
     strBuilder.Append(obj.ToString()); 
     strBuilder.Append(","); 
    } 

    return strBuilder.ToString(0, strBuilder.Length - 1); 
相關問題