使用LINQ删除FileInfo

时间:2015-08-14 11:05:44

标签: c# linq fileinfo

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

  

无法从用法推断出方法'System.Linq.Enumerable.Select(System.Collections.Generic.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());
        }

感谢您的帮助

2 个答案:

答案 0 :(得分:3)

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

只需使用foreach循环:

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

答案 1 :(得分:2)

Select选择了一些内容,FileInfo.Deletevoid。但LINQ查询不应该导致副作用。 除此之外,为什么要将FileInfo投射到FileInfo

您可以使用不是LINQ的List.ForEach

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