我有一些代码在基目录中查找写入(修改)的最新文件。代码工作得很好,因为它找到了我想要的确切文件,但如果有一个系统文件,例如'Thumbs.db',如果该文件是写入的最新文件,我会找到该文件(当我不想)。有没有办法排除返回某些文件类型?我所追求的文件都是XLS(或XLSX)。这是我正在使用的代码:
var vAmeriDirectory = new DirectoryInfo(ConfigurationManager.AppSettings["AmeriFileSourceLoc"]);
var vAmeriFile = vAmeriDirectory.GetFiles().OrderByDescending(f => f.LastWriteTime).First();
答案 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调用来过滤数据,使用任何条件排除相应的文件。