来自Sharepoint的DataServiceQuery IEnumerator仅返回1000个项目

时间:2013-08-17 00:33:05

标签: c# sharepoint-2010 dataservice

我有一个Sharepoint 2010列表,我使用System.Data.Services.Client.DataServiceQuery将列表导入C#列表。但是,当我通过列表枚举时,我限制为1000个项目。

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

任何人都可以提供一些步骤来在Sharepoint中找到MaxPageSize,或者它位于何处,这样我可以在我的C#程序中找回超过1000个项目?

1 个答案:

答案 0 :(得分:0)

问题来自分页

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