听起来您想使用分页 Cookie。请参阅链接以获取示例和更多信息。
https://msdn.microsoft.com/en-us/library/gg328046.aspx
编辑
您需要为循环的每次迭代重新创建分页 cookie,但要以现有分页 cookie 为基础。
下面的代码来自我链接到的示例。
public string CreateXml(string xml, string cookie, int page, int count)
{
StringReader stringReader = new StringReader(xml);
XmlTextReader reader = new XmlTextReader(stringReader);
// Load document
XmlDocument doc = new XmlDocument();
doc.Load(reader);
return CreateXml(doc, cookie, page, count);
}
第一种方法获取您的 FetchXml、pagingcookie、当前页面和每页返回的项目数。它依次调用以下内容:
public string CreateXml(XmlDocument doc, string cookie, int page, int count)
{
XmlAttributeCollection attrs = doc.DocumentElement.Attributes;
if (cookie != null)
{
XmlAttribute pagingAttr = doc.CreateAttribute("paging-cookie");
pagingAttr.Value = cookie;
attrs.Append(pagingAttr);
}
XmlAttribute pageAttr = doc.CreateAttribute("page");
pageAttr.Value = System.Convert.ToString(page);
attrs.Append(pageAttr);
XmlAttribute countAttr = doc.CreateAttribute("count");
countAttr.Value = System.Convert.ToString(count);
attrs.Append(countAttr);
StringBuilder sb = new StringBuilder(1024);
StringWriter stringWriter = new StringWriter(sb);
XmlTextWriter writer = new XmlTextWriter(stringWriter);
doc.WriteTo(writer);
writer.Close();
return sb.ToString();
}
这会构建您的新 FetchXml 以返回下一页结果,但会使用当前的分页 cookie 来确定需要返回的下一页。
那么只需调用以下命令即可获得结果;
RetrieveMultipleRequest fetchRequest1 = new RetrieveMultipleRequest
{
Query = new FetchExpression(xml)
};
EntityCollection returnCollection = ((RetrieveMultipleResponse)_service.Execute(fetchRequest1)).EntityCollection;
通读链接中的完整代码示例,确保您了解它的作用。都在那里。