我正在使用 Odata RESTful 服务阅读 Sharepoint 列表数据(>20000 个条目),详见此处 -http://blogs.msdn.com/b/ericwhite/archive/2010/12/09/getting-started-using- the-odata-rest-api-to-query-a-sharepoint-list.aspx
我能够读取数据,但我只获得了前 1000 条记录。我还检查了 List View Throttling 在 Sharepoint 服务器上是否设置为 5000。请指教。
更新:
@Turker:你的回答很准确!!非常感谢。我能够在第一次迭代中获得前 2000 条记录。但是,我在 while 循环的每次迭代中都得到了相同的记录。我的代码如下-
...initial code...
int skipCount =0;
while (((QueryOperationResponse)query).GetContinuation() != null)
{
//query for the next partial set of customers
query = dc.Execute<CATrackingItem>(
((QueryOperationResponse)query).GetContinuation().NextLinkUri
);
//Add the next set of customers to the full list
caList.AddRange(query.ToList());
var results = from d in caList.Skip(skipCount)
select new
{
Actionable = Actionable,
}; Created = d.Created,
foreach (var res in results)
{
structListColumns.Actionable = res.Actionable;
structListColumns.Created= res.Created;
}
skipCount = caList.Count;
}//Close of while loop
最佳答案
你看到 <link rel="next">
了吗? Feed 末尾的元素?
例如,如果你看
http://services.odata.org/Northwind/Northwind.svc/Customers/
你会看到
<link rel="next" href="http://services.odata.org/Northwind/Northwind.svc/Customers/?$skiptoken='ERNSH'" />
在提要的末尾,这意味着服务正在实现服务器端分页,您需要发送
http://services.odata.org/Northwind/Northwind.svc/Customers/?$skiptoken='ERNSH'
查询以获得下一组结果。
关于OData 服务未返回完整响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6361813/