CAML查询仅选择顶级文件夹

本文关键字:文件夹 选择 查询 CAML | 更新日期: 2023-09-27 18:03:47

我想使用CrossListQueryCache选择文档库的文件夹列表(没有子文件夹,不是递归的)。

一切都很好,除了我正在接收列表中的所有文件夹和子文件夹,而不仅仅是文件夹的第一层。我需要在下面的代码中更改什么,以便只返回第一层文件夹,而不返回其子文件夹和子文件夹等…

string query = string.Empty;
string websQuery = string.Format("<Webs Scope='"{0}'"/>", "None");
string lists = "<Lists ServerTemplate='"101'"" + " ><List ID='"" + listid + "'" /></Lists>";  
bool useList = true;
string relativeUrl = this.GetRelativeUrl();
query = string.Format("<Where><Eq><FieldRef Name='FSObjType' /><Value Type='LookUp'>1</Value></Eq></Where>", relativeUrl); 
CrossListQueryInfo info = new CrossListQueryInfo();
info.Lists = lists;
info.Webs = websQuery;
info.Query = query;
info.ViewFields = "<FieldRef Name='"FileLeafRef'"/>";
info.WebUrl = web.ServerRelativeUrl;
CrossListQueryCache cache = new CrossListQueryCache(info);
SiteDataResults sd = cache.GetSiteDataResults(site, true);

CAML查询仅选择顶级文件夹

使用SPQuery。"Scope"不同于"Recursive"的ViewAttributes:
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spquery.viewattributes.aspx

如果你想只显示文件夹或不显示文件夹,那么你可以添加关于ContentType的信息,就像这里(Drax的回答):
CAML查询:如何从结果集过滤文件夹?