尝试删除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());
}
感谢您的帮助
答案 0 :(得分:3)
Select
用于投影数据,而非用于执行副作用。
只需使用foreach
循环:
foreach(FileInfo fileInfo in duplicatedFiles)
{
fileInfo.Delete();
}
答案 1 :(得分:2)
Select
选择了一些内容,FileInfo.Delete
为void
。但LINQ查询不应该导致副作用。
除此之外,为什么要将FileInfo
投射到FileInfo
?
您可以使用不是LINQ的List.ForEach
:
List<FileInfo> duplicatedFiles = Fso.GetAllDuplicatedFiles(@"C:\", true);
duplicatedFiles.ForEach(fi => fi.Delete());