汎用リストをCSV文字列に変換する 質問する

汎用リストをCSV文字列に変換する 質問する

整数値のリスト (リスト) があり、コンマで区切られた値の文字列を生成したいと考えています。これは、リスト内のすべての項目が 1 つのコンマで区切られたリストに出力されることを意味します。

私の考えは... 1. リストをメソッドに渡します。 2. stringbuilder を使用してリストを反復処理し、カンマを追加します。 3. 最後の文字をテストし、カンマの場合は削除します。

どう思いますか?これが最善の方法でしょうか?

将来的に整数 (現在の計画) だけでなく、文字列、long、double、bool なども処理したい場合、コードはどのように変更されるでしょうか? 任意のタイプのリストを受け入れるようにすることになると思います。

ベストアンサー1

フレームワークがすでに私たちのために行っていることは驚くべきものです。

List<int> myValues;
string csv = String.Join(",", myValues.Select(x => x.ToString()).ToArray());

一般的なケース:

IEnumerable<T> myList;
string csv = String.Join(",", myList.Select(x => x.ToString()).ToArray());

ご覧のとおり、実質的に違いはありません。カンマが含まれる場合は、実際にx.ToString()引用符で囲む必要がある場合があることに注意してください (つまり、 )。"\"" + x.ToString() + "\""x.ToString()

これの少し変わった興味深い記事については、以下を参照。コンマの論争Eric Lippert のブログで。

注: これは.NET 4.0が正式にリリースされる前に書かれたものです。今ならこう言えるでしょう。

IEnumerable<T> sequence;
string csv = String.Join(",", sequence);

オーバーロードを使用するString.Join<T>(string, IEnumerable<T>)このメソッドは、各要素を自動的xに に投影しますx.ToString()

おすすめ記事