C# - リストや配列の要素をカンマ区切りの文字列に結合する

リスト(配列)をカンマ等で結合した文字列にするには、string.join()メソッドを使用します。

リスト(配列)の結合方法

string.join()メソッド の引数に 区切り文字 と 対象のリスト を渡します。
string 区切り文字で連結した文字列 = string.Join('区切り文字', Listや配列);
string 区切り文字列で連結した文字列 = string.Join("区切り文字列", Listや配列);
次のコードは数値のリストをカンマ区切りの文字列にします。
using System.Collections.Generic;

// カンマ区切りの文字列にしたいリスト
var dataList = new List<int>() { 100, 200, 300 };

// カンマ区切りの文字列にする
var csv = string.Join(',', dataList);

// 結果 = "100,200,300"
System.Console.WriteLine(csv);
サンプルコードの実行結果
サンプルコードの実行結果

ダブルクォーテーション(")で囲む

区切り文字に「","」を指定します。先頭と末尾には区切り文字が付与されないため、join()メソッド の結果に付け加えます。

次のサンプルコードはリストの内容をダブルクォーテーション(")付きのカンマ区切文字列にします。

using System.Collections.Generic;

// カンマ区切りの文字列にしたいリスト
var dataList = new List<string>() { "date1", "data2", "data3" };

// ダブルクォーテーション(")で括ったカンマ区切りの文字列にする
var csv = string.Join("\",\"", dataList);

// 結果 = date1","data2","data3
System.Console.WriteLine(csv);

// 先頭と末尾にダブルクォーテーションを付ける
csv = '"' + csv + '"';

// 結果 = "date1","data2","data3"
System.Console.WriteLine(csv);
サンプルコードの実行結果
サンプルコードの実行結果

データ内のダブルクォーテーション(")の対応

CSV形式のデータにおいて ダブルクォーテーション(") はデータの開始と終了を表します。データ中のダブルクォーテーションと区別するため、データ中のダブルクォーテーションは2つ並べて「""」で表します。

データ中のダブルクォーテーションを「""」に置換したい場合は、Linq の Select メソッド等を使用します。

次のサンプルコードはリスト内の「"」を「""」に置換した配列を作成しています。

using System.Collections.Generic;
using System.Linq;

// ダブルクォーテーション(") と NULL を含む文字列のリスト
var dataList = new List<string>() { "---\"---", null, "***\"***" };

// ダブルクォーテーションを置換した配列を作る(null対応)
var newArray = dataList.Select(value => value?.Replace("\"", "\"\"")).ToArray();
サンプルコードの実行結果
サンプルコードの実行結果

参考資料

検証環境