Как правило для получения данных из списков SharePoint мы используем SPQuery. Но если количество возвращаемых элементов велико, то мы можем получить SPQueryThrottleException.
Чтобы этого избежать, необходимо использовать появившийся в SharePoint 2010 класс ContentIterator!
Кроме элементов списков, он также умеет перебирать файлы, списки, сайты, коллекции сайтов, а также элементы или файлы в указанной папке.
Использовать данный класс предельно просто!
Пример:
using (var site = new SPSite("http://x33/")) { using (var web = site.OpenWeb()) { var list = web.Lists["TestList"]; var itemsTitles = new List<string>(); var iterator = new ContentIterator(); iterator.ProcessListItems(list, spListItem => itemsTitles.Add(spListItem.Title), (spListItem, exception) => true); } }
Методу ProceeListItems нужно указать два делегата – для обработки полученного элемента списка и для обработки ошибок при обращении к данным.
Класс находится в Microsoft.Office.Server.Utilites.
При необходимости ему также можно указать SPQuery, чтобы выбирать только нужные элементы.
Методы перебора других сущностей SharePoint аналогичны.
Комментариев нет:
Отправить комментарий