C# 以增量表示的CAML查询项
我目前有一个sharepoint2010列表,其中包含大约200000条记录 我想获取每条记录,调整它,对它进行按摩,并将其存储在SQL表中 到目前为止,我正在使用sharepoint 2010 web服务方法C# 以增量表示的CAML查询项,c#,sharepoint,asmx,caml,C#,Sharepoint,Asmx,Caml,我目前有一个sharepoint2010列表,其中包含大约200000条记录 我想获取每条记录,调整它,对它进行按摩,并将其存储在SQL表中 到目前为止,我正在使用sharepoint 2010 web服务方法GetListItems,就像这样 System.Xml.XmlNode nodeListItems = client.GetListItems("guid", "", query, viewFields, RowNumber, queryOptions, null); 一次查询2000
GetListItems
,就像这样
System.Xml.XmlNode nodeListItems = client.GetListItems("guid", "", query, viewFields, RowNumber, queryOptions, null);
一次查询200000条记录太多了。我怎样才能避开这件事?GetListItems
方法采用CAML查询参数
是否有一种方法可以增量执行此操作,例如一次执行5000条记录?如何构造CAML查询来实现这一点
除非有人有更好的方法来完成这一切 是的,有,您可以对结果进行分页。第五个参数是页面大小,您可以通过
RowNumber
进行设置。如果需要大小为5000的页面,请将其设置为5000
有关访问后续页面的详细信息,请参见
GetListItems方法支持服务器端分页。XML数据
此方法返回的包含ListItemCollectionPositionNext
rs:数据元素中的属性,该元素包含要
支持分页。此字符串包含排序中字段的数据
以及寻呼所需的其他项目。你应该考虑这个字符串
内部文件,不可修改;修改它可能会产生意外的结果
结果。下面的示例显示了此返回值的形式
当支持分页时
<rs:Data ListItemCollectionPositionNext="
Paged=TRUE&p_ID=100&View=
%7bC68F4A6A%2d9AFD%2d406C%2dB624%2d2CF8D729901E%7d&PageFirstRow=
101" Count=1000 >
<z:row ows_FirstName="Nancy" ows_LastName="Name" ….. />
...
</rs:Data>
...
要获取下一页数据,使用queryOption参数,如下所示
如下面的示例所示
<QueryOptions>
<Paging ListItemCollectionPositionNext="
Paged=TRUE&p_ID=100&View=
%7bC68F4A6A%2d9AFD%2d406C%2dB624%2d2CF8D729901E%7d&PageFirstRow=
101" />
</QueryOptions>
因此,您所需要做的就是从每个页面的结果集中获取该属性中的数据,并将其添加到查询中以获得下一个页面