C# 使用创建日期筛选器从目录中删除文件

C# 使用创建日期筛选器从目录中删除文件,c#,io,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).To

我正在尝试删除所有超过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或任何其他较小的方法 做到这一点


提前谢谢

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

.ToList()
    .ForEach(f => f.Delete());
记住,即使是幕后的Linq也会使用迭代器;我会像现在这样离开

看看这个答案


如果您想要单衬里,您可以使用:

files.ToList<FileInfo>().ForEach((FileInfo f) => { f.Delete(); });
files.ToList().ForEach((FileInfo f)=>{f.Delete();});
但这是低效的,而且没有任何意义。你现在做得对


有关更多信息,请参阅。

foreach的
有什么问题?我觉得你的方法很好。如果你是这个意思的话,你不能一次把它们全部删除。您可以使用
Parallel.ForEach
来并行运行它们(.net4和4.5)
ForEach
是其中较小的部分,我想说……=)但是,要缩短代码,您可以通过在顶部使用
语句将名称空间放入
来缩短限定引用。@PawanNogariya:我第一眼看到的唯一一件事是,您可以将
目录.GetFiles
替换为
目录.EnumerateFiles
。后者(4中新增)在开始处理之前不需要将所有代码加载到内存中。如果要查看或增强工作代码,请尝试