DataServiceQuery IEnumerator от Sharepoint, возвращающий только 1000 элементов
У меня есть список Sharepoint 2010, и я использую System.Data.Services.Client.DataServiceQuery, чтобы получить список в C# List. Однако, когда я перечисляю по списку, я ограничен 1000 пунктов.
Я провел некоторое исследование и обнаружил, что Active Directory по умолчанию ограничивает это число до 1000, поэтому имеет смысл, что оно будет ограничено и в Sharepoint, но я бы хотел увеличить это число.
Может ли кто-нибудь предоставить некоторые шаги, чтобы найти MaxPageSize в Sharepoint или где бы он ни находился, чтобы я мог вернуть более 1000 элементов в моей программе на C#?
1 ответ
Проблема исходит от нумерации страниц
Теперь, в зависимости от того, как настроен ваш сервис, вы можете не получить все свои строки. В нашем случае мы получили только 1000. Это означает, что служба настроена так, чтобы возвращать максимум 1000 запросов. Чтобы обойти это, вы должны разбить свои запросы на страницы:
var projects = from project in dc.ITProjects
orderby project.Id
select new
{
Phase = project.Phase.Value,
ProjectName = project.Project
}
;
int recordCount = projects.Count();
int page = 0;
int pageSize = 100;
while(page*pageSize < recordCount)
{
foreach (var project in projects.Skip(page * pageSize).Take(pageSize))
{
Output0Buffer.AddRow();
Output0Buffer.C1 = project.Phase;
Output0Buffer.C2 = project.ProjectName;
}
page++;
}