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