CAML-запрос для выбора только папок верхнего уровня - PullRequest
5 голосов
/ 27 июля 2011

Я хочу выбрать список папок (без подпапок, не рекурсивных) библиотеки документов, используя 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 Ответ

1 голос
/ 07 августа 2011

Используйте атрибуты SPQuery.View с «Scope», отличным от «Recursive»:http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spquery.viewattributes.aspx

Если вы хотите отображать только папки или НЕ папки, вы можете добавить информацию о ContentType, как здесь (ответ Дракса): CAML-запросы: как отфильтровать папки из набора результатов?

...