我正在编写一个小方法,它可以检索给定输入字符串和给定驱动器的所有完整文件名。我的方法如下:
private IEnumerable<string> FindOccurences(string searchQuery, DriveInfo drive)
{
return drive.RootDirectory
.EnumerateFiles("*" + searchQuery + "*", SearchOption.AllDirectories)
.Where(file => !file.FullName.Contains("RECYCLE"))
.Select(file => file.FullName);
}
在没有回收站的驱动器上一切正常,但当枚举文件并进入回收站时,我的 C:\
和 D:\
目录引发了未经授权的访问异常 (UnauthorisedAccessException)
。这个问题在 this topic 中有解释和用法,但没有使用 LINQ 解决。
我希望能够使用 LINQ 跳过回收站并继续处理其他目录。这可能吗?如您所见,我已经尝试通过检查名称来解决问题,但这并没有解决我的问题。
我该如何使用 LINQ 跳过回收站?
编辑: 实际上我在我的 C:\ 目录(操作系统目录)中也找到了一个实例:C:\$Recycle.Bin