使用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());
}
感谢您的帮助
Select
用于投射数据,而不是用于执行副作用。
简单地使用foreach
循环:
foreach(FileInfo fileInfo in duplicatedFiles)
{
fileInfo.Delete();
}
Select
选择某物,FileInfo.Delete
为void
。但是无论如何,LINQ查询不应该产生副作用。除此之外,为什么要将FileInfo
转换为FileInfo
?
你可以使用List.ForEach
,而不是LINQ:
List<FileInfo> duplicatedFiles = Fso.GetAllDuplicatedFiles(@"C:'", true);
duplicatedFiles.ForEach(fi => fi.Delete());