使用创建日期过滤器从目录中删除文件

时间:2013-01-31 09:46:13

标签: c# io

我正在尝试删除超过1小时的所有pdf文件,我正在使用此代码

System.IO.DirectoryInfo directory = new DirectoryInfo(System.Configuration.ConfigurationManager.AppSettings["PDFFilesPath"]);
var files = directory.GetFiles("*.pdf").Where(f => DateTime.Now.Subtract(f.CreationTime).TotalMinutes >= int.Parse(System.Configuration.ConfigurationManager.AppSettings["MinutesOld"]));
foreach (var file in files)
{
    file.Delete();
}

代码工作正常且符合预期。

但我想知道是否有任何方法可以不使用foreach或任何其他较小的方法 实现这个

提前致谢!

2 个答案:

答案 0 :(得分:0)

您可以使用LINQ在Linq代码的末尾添加以下内容。

.ToList()
    .ForEach(f => f.Delete());

请记住,即使是幕后的Linq也会使用迭代器;我会离开,因为它是

也看看这个答案

Delete files older than 3 months old in a directory using .NET

答案 1 :(得分:0)

如果你想要一个衬垫,你可以使用:

files.ToList<FileInfo>().ForEach((FileInfo f) => { f.Delete(); });

但这效率低下,实在没有任何意义。你现在正以正确的方式做到这一点。

有关详细信息,请参阅this article