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

C# 使用DirectoryInfo.GetFiles()时排除某些文件,c#,.net-4.0,sharpdevelop,C#,.net 4.0,Sharpdevelop,我有一些代码在基本目录中查找最近写入(修改)的文件。代码可以很好地工作,因为它可以找到我要查找的确切文件,但是如果有一个系统文件,例如“Thumbs.db”,并且如果该文件是最近写入的文件,我会找到该文件(当我不想查找时)。有没有办法排除返回某些文件类型?我要找的文件都是XLS(或XLSX)。以下是我正在使用的代码: var vAmeriDirectory = new DirectoryInfo(ConfigurationManager.AppSettings["AmeriFileSourceL

我有一些代码在基本目录中查找最近写入(修改)的文件。代码可以很好地工作,因为它可以找到我要查找的确切文件,但是如果有一个系统文件,例如“Thumbs.db”,并且如果该文件是最近写入的文件,我会找到该文件(当我不想查找时)。有没有办法排除返回某些文件类型?我要找的文件都是XLS(或XLSX)。以下是我正在使用的代码:

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

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

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

因为您知道您只需要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。

由于您知道您只需要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