ファイル名に基づいて一連のファイルを注文しようとしています。入力は、次のようなファイルを含むディレクトリです。
f0.vesperdp
f1.vesperdp
f2.vesperdp
....
f9.vesperdp
f10.vesperdp
f11.vesperdp
f12.vesperdp
それらを並べ替えるために、この LINQ クエリを作成しました。
if (Directory.Exists(path))
{
var directoryInfo = new DirectoryInfo(path);
var files = from file in directoryInfo.EnumerateFiles()
.Where(f => f.Extension == PAGE_FILE_EXTENSION)
orderby file.Name.Substring(1, file.Name.Length - 1) ascending
select file.FullName;
return files.ToArray<string>();
}
しかし、彼らは次のように戻ってきます
f0.vesperdp
f1.vesperdp
f10.vesperdp
....
f19.vesperdp
f2.vesperdp
f20.vesperdp
f21.vesperdp
自然な順序 (0 から n as までf0,f1,f2...,f9,f10,f11
) を使用して並べ替える必要があります。これに一致するように orderby フィルターを修正するにはどうすればよいですか? または、他の方法がある場合、どうすればそれを達成できますか? 前もって感謝します。