根据目录中的创建日期获取文件时获取特定文件扩展名

时间:2014-11-27 14:09:20

标签: c# fileinfo getfiles

我试图根据最早的创建日期从某个目录中获取所有文件。有什么办法可以过滤掉所有不是.tif的扩展吗?我正在使用的代码如下。

string dir = KQV.Default.Directory;
DirectoryInfo info = new DirectoryInfo(dir);
FileInfo[] files = info.GetFiles().OrderByDescending(p => p.CreationTime).ToArray();

出于某种原因,我似乎无法搜索到哪里有结尾

编辑:Endswith需要一个字段来处理,在这种情况下需要文件的名称。得到了感谢这里的回复:3

4 个答案:

答案 0 :(得分:0)

这应该有效(未经测试)

FileInfo[] files = info.GetFiles()
    .Where(p => !String.Equals(Path.GetExtension(p.FullName), "tif", StringComparison.InvariantCultureIgnoreCase))
    .OrderByDescending(p => p.CreationTime)
    .ToArray();

答案 1 :(得分:0)

只需简单地使用Where,因此代码看起来像(已测试):

DirectoryInfo info = new DirectoryInfo(@"C:\tmp");
        FileInfo[] files = info.GetFiles()
            .Where(f=>!(f.FullName.EndsWith("tif")))
            .OrderByDescending(p => p.CreationTime)
            .ToArray();

答案 2 :(得分:0)

这对我有用。

有点乱搞

FileInfo[] files = info.GetFiles().Where(p => p.Name.EndsWith(".tif")).OrderByDescending(p => p.CreationTime).ToArray();

答案 3 :(得分:0)

在单个查询中:

        var info = new DirectoryInfo("");
        var files = info.GetFiles().Aggregate(new {FI = (FileInfo) null, Created = DateTime.MinValue},
                                              (x, y) => y.CreationTimeUtc < x.Created &&
                                                        y.Name.EndsWith(".tif", true, CultureInfo.CurrentCulture)
                                                            ? new {FI = y, Created = y.CreationTimeUtc}
                                                            : x);