使用 LINQ 删除 FileInfo

Delete FileInfo using LINQ

我在尝试删除 FileInfo 时收到以下消息:

The type arguments for method 'System.Linq.Enumerable.Select(System.Collections.Generic.IEnumerable, System.Func)' cannot be inferred from the usage. Try specifying the type arguments explicitly.

这是我的代码:

private void btn_Click(object sender, EventArgs e)
        {
            List<FileInfo> duplicatedFiles = Fso.GetAllDuplicatedFiles(@"C:\", true);

            duplicatedFiles.Cast<FileInfo>().Select(f => f.Delete());
        }

感谢您的帮助

Select 用于 投影数据 ,不用于执行副作用。

只需使用 foreach 循环:

foreach(FileInfo fileInfo in duplicatedFiles)
{
    fileInfo.Delete();
}

Select选择某物,FileInfo.Deletevoid。但是无论如何,LINQ 查询都不应该产生副作用。 除此之外,为什么要将 FileInfo 转换为 FileInfo

您可以使用 List.ForEach,它不是 LINQ:

List<FileInfo> duplicatedFiles = Fso.GetAllDuplicatedFiles(@"C:\", true);
duplicatedFiles.ForEach(fi => fi.Delete());