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++;
    }
Другие вопросы по тегам