【C#】【Linq】ファイル名の昇順に並べたリストを作成する

目的

ファイル名が「file1.txt」「file2.txt」「file10.txt」などの規則性がある場合に、正しくソートしたい場合を想定。 今回は、ファイル名中の数値のみを正規表現で取得し、それをソートすることで実現した。

ソースコード

var fileList = (new DirectoryInfo(filePath)).GetFiles().
    Select(x =>
    new
    {
        name = x.FullName,
        //ファイル名だけ取り出す→数字だけ残す→数値に変換する(ソート用)
        no = int.Parse(Regex.Replace(Path.GetFileName(x.FullName), @"[^0-9]", ""))
    }
    ).OrderBy(x => x.no).ToList();