2017-05-24 18 views
1

我使用OrganizationServicePro从CRM获取记录,我想从一开始跳过一些记录。情况是,例如我有2个实体被称为A和B.我正在使用OrganizationServiceProxy的RetrieveMultiple方法。从客户关系管理使用OrganizationServiceProxy Retreiving跳过CRM记录

A具有27条记录

B已经记录32

总计= 59

和我有1种方法,其获取从两个记录,第一优先级是实体A和实体然后B.现在假设页面大小=从实体10

在第一次调用 10个记录是返回

在第二呼叫, 另一个10个记录从实体A

在第三呼叫,从实体A 7的记录和从实体B 3个记录

在第四呼叫 10记录从实体B (但我想跳过第3和4日开始记录,因为它的第三个呼叫过程中已经获取)

所以我WA nt在从CRM中获取数据时跳过记录。我搜索了很多,但没有得到任何东西。我的方法是,如果我从CRM获取所有记录,并从LINQ做分页。

+0

等待,您可以设法执行2个RetrieveMultiple结果集(实体A + B)的联合,以在您的方法中获取合并的数据集。但寻呼曲奇是用于RetreiveMultiple调用本身分页..所以你必须使用LINQ从本地合并数据集分页.. –

回答

2

这听起来像你想使用寻呼饼干。例如查看链接和更多信息。

https://msdn.microsoft.com/en-us/library/gg328046.aspx

编辑

您需要重新创建你的循环的每一次迭代寻呼饼干,但它的基础上的现有寻呼的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来确定哪些是需要返回下一页。

然后,只需要调用以下内容即可获得结果;

​​

请仔细阅读链接中的完整代码示例,并确保明白它在做什么。它在那里。

+0

从页面cookie我能够获得唯一标识符的最后一个元素..但我如何获取最后一个记录后的记录? –

相关问题