使用LINQ删除FileInfo

本文关键字:FileInfo 删除 LINQ 使用 | 更新日期: 2023-09-27 18:07:59

当试图删除FileInfo时,我得到以下消息:

方法"System.Linq.Enumerable.Select(System.Collections.Generic. select)"的类型参数。IEnumerable, System.Func)'不能从用法中推断出来。尝试显式指定类型参数。

下面是我的代码:
private void btn_Click(object sender, EventArgs e)
        {
            List<FileInfo> duplicatedFiles = Fso.GetAllDuplicatedFiles(@"C:'", true);
            duplicatedFiles.Cast<FileInfo>().Select(f => f.Delete());
        }

感谢您的帮助

使用LINQ删除FileInfo

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());