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