C#からフォルダー内のすべてのファイルのリストを取得しようとしています。簡単:
Directory.GetFiles(folder)
しかし、それらはすべて数字であり、ディレクトリ内の最大の数字を知る必要がありますであるため、アルファベット順に逆にソートされた結果が必要です。もちろん、それらを配列/リストオブジェクトに取り込み、ソートすることはできますが、代わりにフィルター/パラメーターがあるのではないかと思いましたか?
それらはすべて先行ゼロで名前が付けられます。お気に入り:
00000000001.log
00000000002.log
00000000003.log
00000000004.log
..
00000463245.log
00000853221.log
00024323767.log
最も簡単な方法は何ですか?他のファイルを取得する必要はありません。「最大/最新」の番号だけを取得します。
var files = Directory.EnumerateFiles(folder)
.OrderByDescending(filename => filename);
(EnumerateFiles
メソッドは.NET 4で新しく追加されました。以前のバージョンを使用している場合は、GetFiles
を引き続き使用できます)
編集: MoreLinq で定義されているMaxBy
メソッドを使用する場合、実際にはファイル名をソートする必要はありません。
var lastFile = Directory.EnumerateFiles(folder).MaxBy(filename => filename);
var files = from file in Directory.GetFiles(folder)
orderby file descending
select file;
var biggest = files.First();
あなたが本当に最高の数を求めていて、それらのログファイルがあなたが提案したように命名されているなら、どうですか:
Directory.GetFiles(folder).Length
@Thomasの発言を拡張し、上位Xファイルのみが必要な場合は、これを行うことができます。
int x = 10;
var files = Directory.EnumerateFiles(folder)
.OrderByDescending(filename => filename)
.Take(x);