Ber*_*nDK 20 c# directory file alphabetical-sort
我想从C#获取文件夹中所有文件的列表.很容易:
Directory.GetFiles(folder)
Run Code Online (Sandbox Code Playgroud)
但我需要按字母顺序排序结果,因为它们都是数字,我需要知道目录中的最高数字.当然我可以把它们抓到一个数组/列表对象然后进行排序,但我想知道是否有一些过滤器/参数呢?
它们都以前导零命名.喜欢:
00000000001.log
00000000002.log
00000000003.log
00000000004.log
..
00000463245.log
00000853221.log
00024323767.log
Run Code Online (Sandbox Code Playgroud)
什么是最简单的方法?我不需要获取其他文件,只需要"最大/最新"的数字.
Tho*_*que 36
var files = Directory.EnumerateFiles(folder)
.OrderByDescending(filename => filename);
Run Code Online (Sandbox Code Playgroud)
(该EnumerateFiles方法是.NET 4中的新方法,GetFiles如果您使用的是早期版本,仍可以使用)
编辑:如果您使用MoreLinq中MaxBy定义的方法,实际上您不需要对文件名进行排序:
var lastFile = Directory.EnumerateFiles(folder).MaxBy(filename => filename);
Run Code Online (Sandbox Code Playgroud)
yas*_*891 16
var files = from file in Directory.GetFiles(folder)
orderby file descending
select file;
var biggest = files.First();
Run Code Online (Sandbox Code Playgroud)
如果你真的是在最高数字之后并且这些日志文件的名称与你建议的一样,那么:
Directory.GetFiles(folder).Length
Run Code Online (Sandbox Code Playgroud)
扩展@Thomas所说的,如果你只需要前X个文件,你可以这样做:
int x = 10;
var files = Directory.EnumerateFiles(folder)
.OrderByDescending(filename => filename)
.Take(x);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
53554 次 |
| 最近记录: |