我在回收站中有一些已删除的文件和文件夹。当我恢复一个项目时,我需要根据我的特殊算法恢复一些其他项目。因此,我在事件接收器中使用以下代码片段来获取回收站的项目:
var recycleBinItems = properties.Web.GetRecycleBinItems(new SPRecycleBinQuery());
然后我列举它们。但这是一个很长的操作,所以我想获取回收站列表以使用 CAML 检索数据。如何获取回收站的对象?
没有可用于将 CAML 查询传递到回收站的 API 调用。如您所注意到的,SPWeb 类上有一个 GetRecycleBinItems 方法,但根据 MSDN 上的文档,它仅在控制排序顺序或限制返回的项目时才有用。
SPWeb 的 RecycleBin 属性基本上是相同的网关,尽管默认情况下它返回所有项。
将来可能对您有所帮助的是,SPWeb 有两个回收站——一个在 Web 级别,另一个在网站集。您可以将 Web 级别回收站配置为仅保留文件一周或一个月 - 考虑到您的数量来限制在更一般的情况下需要搜索的文件,这是有意义的。这些文件将从 Web 级别移动到网站集级别回收站,因此您仍然可以根据需要恢复它们,并且它们也可以在那里维护自定义时间段。