У нас есть список SharePoint, содержащий 50 000 элементов, и мы хотим извлечь из него некоторые данные, не отключая регулирование по умолчанию в SP2010.
Из MSDN , характерного для обработки больших списков, мы решили, что ключевым ингредиентом будет использование небольшого RowLimit для SPQuery и использование ListItemCollectionPosition для пакетной обработки.
Однако,с нашим кодом (что-то вроде этого) исключения регулирования все еще срабатывают:
SPQuery query = new SPQuery();
query.Query = "<Where><Contains><FieldRef Name=\"MatterName\" /><Value Type=\"Text\">7476922</Value></Contains></Where>";
query.ViewFields = "<FieldRef Name=\"MatterName\"/>";
query.RowLimit = 10;
int index = 0;
do
{
SPListItemCollection batch = mattersList.GetItems( query );
query.ListItemCollectionPosition = batch.ListItemCollectionPosition;
}
while ( query.ListItemCollectionPosition != null );
По мнению экспертов MVP на SharePoint Connections 2010, это по проекту , как неявная сортировкав результирующем наборе все равно будет срабатывать порог регулирования элемента 5000.
Что хорошо и все, но тогда как извлечь из этого списка?Будет ли лучше использовать ContentIterator ?Если да, то в чем заключается магия, которую итератор контента использовал бы для этого?