Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在这段代码中去掉foreach语句_C# - Fatal编程技术网

C# 如何在这段代码中去掉foreach语句

C# 如何在这段代码中去掉foreach语句,c#,C#,我有一个简单的方法: internal void run() { foreach (string file in Directory.GetFiles(Path).ToList() .Where(x => DateTime.Today.Subtract(File.GetCreationTime(x)).Days > NumberOfDays)) { File.Delete(file); } } 有可能去掉foreach语句吗?

我有一个简单的方法:

internal void run()
{
    foreach (string file in Directory.GetFiles(Path).ToList()
        .Where(x => DateTime.Today.Subtract(File.GetCreationTime(x)).Days > NumberOfDays))
    {
        File.Delete(file);
    }
}

有可能去掉foreach语句吗?

这是一个需要代码审查的问题:做什么?如果要迭代一个集合,则需要循环的某个变体。据我所知,在.NET中没有大容量文件删除。虽然它可能是我链接到的文件的副本,并且它给出了一个答案,但您应该知道,并不是每个人都喜欢以这种方式执行操作-阅读所有答案。请注意您引入的每一个“简化”(例如,通过使用任何Linq方法)只隐藏循环。如果要对集合的所有项执行某些操作,当然应该迭代该集合。因此,当使用另一种方法时,您得到的只是隐藏复杂性。另一件事是,您可以在
GetFiles
之后省略对
ToList()
的调用,因为循环无论如何都会迭代文件。
Directory.GetFiles(Path).ToList()
    .Where(x => DateTime.Today.Subtract(File.GetCreationTime(x)).Days > NumberOfDays)
    .ForEach(File.Delete);