使用LINQ with Action删除旧文件

Cri*_*ano 2 c# linq

我想做点什么

Action<FileInfo> deleter = f =>
    {
        if (....) // delete condition here
        {
            System.IO.File.Delete(f.FullName);
        }
    };

DirectoryInfo di = new DirectoryInfo(_path);

di.GetFiles("*.pdf").Select(deleter); // <= Does not compile!
di.GetFiles("*.txt").Select(deleter); // <= Does not compile!
di.GetFiles("*.dat").Select(deleter); // <= Does not compile!
Run Code Online (Sandbox Code Playgroud)

为了从目录中删除旧文件.但我不知道如何直接将委托应用于FilInfo []而没有明确的foreach(上面列出的想法当然不起作用).

可能吗?

ReP*_*rre 5

Select()用于将项目从中投射TSourceTResult.在你的情况下,你不需要Select因为你没有投射.相反,使用List<T>s ForEach方法删除文件:

di.GetFiles("*.pdf").ToList().ForEach(deleter);
Run Code Online (Sandbox Code Playgroud)