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