potisanのプログラミングメモ

プログラミング素人です。昔の自分を育ててくれたネット情報に少しでも貢献できるよう、情報を貯めていこうと思っています。Windows環境のC++やC#がメインです。

C#9&Win API リストビューの内容をCSVへ出力する

リストビューの内容をCSVへ出力するサンプルコードです。リストビューのColumnsItemsは特殊なコレクションクラスなのでLINQを適用できませんが、Cast<T>で対応するクラスのIEnumerable<T>へ変換すればLINQを適用できます。クラスなので参照コピーで済むと思います。

var savePath = "<保存先のパスを指定します>";

var builder = new StringBuilder();
// ヘッダーの書き出し
builder.AppendLine(string.Join<string>(',',    listView1.Columns.Cast<ColumnHeader>().Select(column => $"\"{column.Text}\"")));
// データの書き出し
foreach (ListViewItem item in listView1.Items)
{
    builder.AppendLine(string.Join<string>(',',
        item.SubItems.Cast<ListViewItem.ListViewSubItem>().Select(subItem => $"\"{subItem.Text}\"")));
}
File.WriteAllText(savePath, builder.ToString());