CAML查询仅选择顶级文件夹

时间:2011-07-27 13:52:12

标签: c# sharepoint sharepoint-2010 caml

我想使用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);

1 个答案:

答案 0 :(得分:1)

使用SPQuery.ViewAttributes,其中“Scope”与“Recursive”不同:
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spquery.viewattributes.aspx

如果您只想显示文件夹或NOT文件夹,那么您可以添加有关ContentType的信息,例如此处(Drax的回答):
CAML queries: how to filter folders from result set?