使用 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.Delete
是void
。但是无论如何,LINQ 查询都不应该产生副作用。
除此之外,为什么要将 FileInfo
转换为 FileInfo
?
您可以使用 List.ForEach
,它不是 LINQ:
List<FileInfo> duplicatedFiles = Fso.GetAllDuplicatedFiles(@"C:\", true);
duplicatedFiles.ForEach(fi => fi.Delete());
我在尝试删除 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.Delete
是void
。但是无论如何,LINQ 查询都不应该产生副作用。
除此之外,为什么要将 FileInfo
转换为 FileInfo
?
您可以使用 List.ForEach
,它不是 LINQ:
List<FileInfo> duplicatedFiles = Fso.GetAllDuplicatedFiles(@"C:\", true);
duplicatedFiles.ForEach(fi => fi.Delete());