2009-10-07 19 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 ではなく、リストに定義されています。 –

+0

それは間違いだった –

+0

なぜなら、なぜ私がForEachを書いたのかわからないと間違っていた... –

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が連結ではるかに高速であることがわかった。リストのサイズが大きい場合は特に便利です! –

+0

StringBuilder.SubStringが存在しません。StringBuilder.ToString(int startIndex、int length) – Trillian

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

答えを投票している人が投票した理由についてコメントを残すと便利です。 これは問題に対する完全に正当な解決策です! –

+0

はい、正当な、それを行う最も簡単な方法ではありません。ランク付けシステムは、単にトップへの最良の回答を得ることです。 –

+0

私は、答えが間違っているか、不正確であるか、詳細が不足している場合にのみ、投票に投票すると思います。 LINQを使用してここに投稿された回答のほとんどは、必ずしも「シンプル」ではありません! –

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); 
関連する問題