SPSiteDataQuery: фильтрация типов содержимого в SharePoint 2010

В SharePoint 2007 выполняется SPSiteDataQuery с фильтром для типов контента работал как положено.

<Where>
  <Eq>
    <FieldRef Name='ContentType'/>
    <Value Type='Text'>SomeContentType</Value>
  </Eq>
</Where>

В SharePoint 2010 один и тот же запрос возвращает элементы только из одного списка. Возможным обходным решением будет фильтрация по идентификатору типа контента. Необходимо использовать оператор "BeginsWith", поскольку "тип содержимого списка" наследуется от "типа содержимого сайта":

<Where>
  <BeginsWith>
    <FieldRef Name='ContentTypeID'/>
    <Value Type='Text'>SomeContentTypeId</Value>
  </BeginsWith>
</Where>

Но это будет соответствовать всем элементам с этим типом контента или с любым унаследованным типом контента. Что не то, что я хочу.

Кто-нибудь знает, как создать SPSiteDataQuery с фильтром типа контента?

1 ответ

Попробуйте это (см. Тип вычисляемого значения):

<Where>
  <Eq>
    <FieldRef Name='ContentType'/>
    <Value Type='Computed'>SomeContentType</Value>
  </Eq>
</Where>
Другие вопросы по тегам