Sharepoint的DataServiceQuery IEnumerator仅返回1000个项

本文关键字:返回 1000个项 IEnumerator DataServiceQuery Sharepoint | 更新日期: 2023-09-27 18:28:10

我有一个Sharepoint 2010列表,我正在使用System.Data.Services.Client.DataServiceQuery将该列表获取到C#列表中。然而,当我列举清单时,我只能列举1000项。

我做了一些研究,发现Active Directory默认将这个数字限制为1000,所以它在Sharepoint中也会受到限制是有道理的,但我想增加这个数字。

有人能提供一些步骤来在Sharepoint中或它所在的任何地方找到MaxPageSize吗?这样我就可以在C#程序中取回1000多个项目了?

Sharepoint的DataServiceQuery IEnumerator仅返回1000个项

分页出现问题

现在,根据您的服务配置方式,您可能不会收到所有的行。在我们的案例中,我们只得到了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++;
    }