web-dev-qa-db-ja.com

LINQ:整数のリストをコンマ区切りの文字列に連結するにはどうすればよいですか?

それはおそらく私が見逃した愚かなことですが、私はそれらを合計する代わりに整数のリストを連結しようとします:

integerArray.Aggregate((accumulator, piece) => accumulator+"," + piece)

コンパイラーは引数エラーについて不平を言いました。ループを経由せずにこれを行うための洗練された方法はありますか?

39
Haoest

どのバージョンの.NETですか? 4.0では、string.Join(",",integerArray)を使用できます。 3.5では、string.Join(",",Array.ConvertAll(integerArray,i=>i.ToString()));を使用したくなります(それを前提としてis配列)。それ以外の場合は、makeを配列にするか、StringBuilderを使用します。

68
Marc Gravell

あなたはおそらく String.Join を使いたいでしょう。

string.Join(",", integerArray.Select(i => i.ToString()).ToArray());

.Net 4.0を使用している場合は、アレイを具体化する面倒な作業を行う必要はありません。そしてただできる

 string.Join(",", integerArray);
18
48klocs

発生しているエラーは、シードを指定できるAggregateのオーバーライドを使用しなかったためです。シードを指定しない場合は、コレクションのタイプが使用されます。

integerArray.Aggregate("", (accumulator, piece) => accumulator + "," + piece);
17
Samuel

@Marcに別の選択肢を追加するだけです

var list = string.Join( ",", integerArray.Select( i => i.ToString() ).ToArray() );
2
tvanfosson