У меня проблемы с 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 элементов).Что можно попробовать для разбивки на страницы с включенными условиями «Где»?
Спасибо