Похоже, что поиск с использованием CAML и SPQuery не работает должным образом с пользовательскими метаданными, при поиске SPFolders вместо файлов или при поиске пользовательских типов содержимого. Я использовал U2U для тестирования различных запросов, и просто никуда не попал. Документы не очень полны по этой теме, и Google тоже не помогает.
В одном тесте я пытаюсь найти любые SPFolders в дереве, которые являются определенным пользовательским типом контента. Если я правильно понимаю CAML, это должно работать:
<Query>
<Where>
<Eq>
<FieldRef Name='ContentType' />
<Value Type='Text'>CustomTypeName</Value>
</Eq>
</Where>
</Query>
В другом тесте я пытаюсь найти любой SPFolder, в котором для свойства пользовательских метаданных установлено определенное значение.
<Query>
<Where>
<Eq>
<FieldRef Name='CustomProp' />
<Value Type='Text'>SpecificPropValue</Value>
</Eq>
</Where>
</Query>
В обоих случаях я устанавливаю корень для поиска в библиотеке документов, которая содержит папки, которые содержат папки, которые содержат папки (фу.). Также я устанавливаю SPQuery для рекурсивного поиска.
Папка, которую я ищу два шага вниз, является самой дальней в дереве. Я не хочу повторять весь путь, чтобы вручную найти нужные папки.
РЕДАКТИРОВАТЬ Также было бы полезно знать, что я использую как SPList.GetItems с SPQuery в качестве аргумента, так и SPWeb.GetSiteData с SPSiteDataQuery в качестве аргумента. На данный момент кажется, что папки не включены в поисковый набор ни для одного из этих запросов.
Любая помощь будет принята с благодарностью.