Caml Query RowFilter не работает с условиями WHERE - порог просмотра списка - PullRequest
0 голосов
/ 10 апреля 2019

У меня проблемы с CAML Query в Списке 8000+ на Sharepoint.Я хочу разбить запрос на страницы, чтобы избежать этой проблемы.Я использовал этот код c #:

List spList = clientContext.Web.Lists.GetByTitle(ConfigurationManager.AppSettings["ListaDocumenti"]);
clientContext.Load(spList);
clientContext.ExecuteQuery();

if (spList != null && spList.ItemCount > 0)
{
CamlQuery camlQuery = new CamlQuery();
string query = @"<View Scope='RecursiveAll'>
 <QueryOptions><ViewAttributes Scope='Recursive'/></QueryOptions>
 <RowLimit>1000</RowLimit>
 <Query>
  <Where>                                    
   <And>
    <And>                                                    
     <And>
      <Eq>
       <FieldRef Name='p_notifica' />
       <Value Type='Boolean'>0</Value>
      </Eq>
      <Leq>
       <FieldRef Name='p_DataPubblicazione' />
       <Value IncludeTimeValue='false' Type='DateTime'>{0}</Value>
      </Leq>
     </And>                                                      
     <IsNotNull>
      <FieldRef Name='p_CodiceCliente' />
     </IsNotNull>
    </And>
    <Eq>
     <FieldRef Name='FSObjType' />
     <Value Type='Integer'>0</Value>
    </Eq>
   </And>
  </Where>
 </Query>                                          
</View>";
camlQuery.ViewXml = String.Format(query, date.AddDays(offset).ToString("s") + "Z"/*"2018-10-12T00:00:00Z"*/);
bool morerecords = false;
List<SPDocument> list_documents = new List<SPDocument>();
do
{
 ListItemCollection listItems = spList.GetItems(camlQuery);
 clientContext.Load(listItems);
 clientContext.ExecuteQuery();

 morerecords = listItems.Count == 1000; 

 list_documents.Add(...)

 camlQuery.ListItemCollectionPosition = listItems.ListItemCollectionPosition;
} while (morerecords);

Запуская этот запрос в производственной среде (более 8000 элементов), он возвращает сообщение «Попытка операции запрещена, поскольку она превышает пороговое значение представления списка, установленное администратором», вВ тестовой среде все работает правильно (<5000 документов). </p>

Если я удаляю условия «Где», это работает правильно, но возвращается весь список (с ограничением в 1000 элементов).Что можно попробовать для разбивки на страницы с включенными условиями «Где»?

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...