使用DirectoryInfo.GetFiles()时排除某些文件

时间:2014-02-04 22:13:43

标签: c# .net-4.0 sharpdevelop

我有一些代码在基目录中查找写入(修改)的最新文件。代码工作得很好,因为它找到了我想要的确切文件,但如果有一个系统文件,例如'Thumbs.db',如果该文件是写入的最新文件,我会找到该文件(当我不想)。有没有办法排除返回某些文件类型?我所追求的文件都是XLS(或XLSX)。这是我正在使用的代码:

var vAmeriDirectory = new DirectoryInfo(ConfigurationManager.AppSettings["AmeriFileSourceLoc"]);
var vAmeriFile = vAmeriDirectory.GetFiles().OrderByDescending(f => f.LastWriteTime).First();

2 个答案:

答案 0 :(得分:3)

由于您知道自己只需要XLS和XLSX文件,因此请添加where子句以确保只获得这些扩展:

var vAmeriFile = vAmeriDirectory.GetFiles()
.Where(f => f.Extension.Equals(".xls", StringComparison.InvariantCultureIgnoreCase) 
  || f.Extension.Equals(".xlsx", StringComparison.InvariantCultureIgnoreCase))
.OrderByDescending(f => f.LastWriteTime).First();

为了便于阅读而添加了换行符。请注意,如果目录中没有任何Excel文件,First()将抛出错误。您可能希望使用FirstOrDefault(),它将返回null。

答案 1 :(得分:1)

您可以在LINQ代码中插入Where调用来过滤数据,使用任何条件排除相应的文件。