C# 使用创建日期筛选器从目录中删除文件
我正在尝试删除所有超过1小时的pdf文件,我正在使用此代码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
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中新增)在开始处理之前不需要将所有代码加载到内存中。如果要查看或增强工作代码,请尝试