potisanのプログラミングメモ

趣味のプログラマーがプログラミング関係で気になったことや調べたことをいつでも忘れられるようにメモするブログです。

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());