SPQuery и RowLimit - PullRequest
       56

SPQuery и RowLimit

2 голосов
/ 28 апреля 2011

У меня есть около 10000+ строк (Listitems) в списке, который я хочу запросить.

Я хочу повторить каждый элемент в timerJob - но я не могу взять их все одновременно, поскольку: Переопределение модели объекта - НЕТ, порог ListView - 1000 - на уровне FARM, и я не могу изменитьэтот.

Как я могу перебрать все 10000+ (как пакет) ??

Ответы [ 2 ]

5 голосов
/ 28 апреля 2011

Вы должны использовать ContentIterator .Это позволит вам перебирать содержимое очень больших списков, не вызывая SPQueryThrottledException.

Например:

SPList list = SPContext.Current.Web.Lists["MyList"];

// Build query using an iterator-defined WHERE clause
string query = string.Format("<Where><Eq><FieldRef Name='MyFieldName'/><Value Type='Text'>MyFieldValue</Value></Eq></Where>{0}", ContentIterator.ItemEnumerationOrderByNVPField);

// Instantiate iterator and use it to process the list
ContentIterator iterator = new ContentIterator();
iterator.ProcessListItems(list, query, ProcessListItem, ProcessListItemError);

Тогда вы определите свои ProcessListItem и ProcessListItemError таким образом:

static void ProcessListItem(SPListItem item) {
    Console.WriteLine("ProcessListItem: Name {0}", item.Title);
}

static bool ProcessListItemError(SPListItem item, Exception e) {
    Console.WriteLine("ERROR: message {0}", e.Message);
    return true;
}

Я бы также порекомендовал вам ознакомиться со статьями Microsoft *1014* Best Practices с SharePoint Server , в частности " Написание эффективного кода в SharePoint Server ",который далее обсуждает правильное написание запросов.

0 голосов
/ 22 июля 2012

Content Iterator - одна из лучших техник, которую вы можете использовать. Не забудьте использовать порядок по пункту ContentIterator.ItemEnumerationOrderByNVPField , который использует индексированное поле, в противном случае итератор содержимого может вызвать исключение при обработке больших элементов.

Эта статья лучше всего описывает итератор контента и другие методы:

http://extreme -sharepoint.com / 2012/07/17 / доступа к данным, с помощью-CAML-запросы /

...