【问题标题】:Get a certain file extension while getting files based on creation date from a directory根据目录的创建日期获取文件时获取特定的文件扩展名
【发布时间】:2014-11-27 14:09:19
【问题描述】:

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

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

由于某种原因,我似乎无法使用 where endswith 进行搜索

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

【问题讨论】:

    标签: c# fileinfo getfiles


    【解决方案1】:

    只需简单地使用Where,所以代码看起来像(经过测试):

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

    【讨论】:

      【解决方案2】:

      这应该可以工作(未经测试)

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

      【讨论】:

      • 从您的建议中得到一个想法。试过这个,它工作 FileInfo[] files = info.GetFiles().Where(p => p.Name.EndsWith(".tif")).OrderByDescending(p => p.CreationTime).ToArray();跨度>
      • 很高兴为您提供帮助,您还可以拥有“.TIF”和“.Tif”。您需要使其不区分大小写。
      • @Candide endwith 有一个区分大小写的重载,看我的回答,我用过
      【解决方案3】:

      这对我有用。

      玩了一会儿

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

      【讨论】:

        【解决方案4】:

        在单个查询中:

                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);
        

        【讨论】:

          猜你喜欢
          • 2021-06-08
          • 2023-03-02
          • 1970-01-01
          • 2014-09-21
          • 2014-09-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-23
          相关资源
          最近更新 更多