Dynamics 2011 SOAP - RetrieveMultiple return 仅单个链接记录

Dynamics 2011 SOAP - RetrieveMultiple return only single linked record

使用下面的 SOAP,我能够从 Dynamics 2011 IFD 安装中检索自特定日期以来已修改的所有联系人。 此外,它 return 是链接 'Membership' 记录中的一些字段。

然而,在存在多个会员记录的情况下,return我只需要 return 最新的会员记录(更新日期字段具有最高日期,会员付款日期字段(日期时间)不为空)。

任何人都可以帮助调整以下内容,以便它不会 return 每个联系人的会员记录的记录 - 每个联系人只有一个记录,只有最新的会员记录字段。

          <s:Body>
      <RetrieveMultiple xmlns="http://schemas.microsoft.com/xrm/2011/Contracts/Services" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
      <query i:type="a:QueryExpression" xmlns:a="http://schemas.microsoft.com/xrm/2011/Contracts">
        <a:ColumnSet>
          <a:AllColumns>false</a:AllColumns>
          <a:Columns xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
            <b:string>contactid</b:string>
            <b:string>firstname</b:string>
            <b:string>lastname</b:string>
          </a:Columns>
        </a:ColumnSet>
        <a:Criteria>
          <a:Conditions />
          <a:FilterOperator>And</a:FilterOperator>
          <a:Filters>
            <a:FilterExpression>
              <a:Conditions>
                <a:ConditionExpression>
                  <a:AttributeName>createdon</a:AttributeName>
                  <a:Operator>GreaterThan</a:Operator>
                  <a:Values xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
                    <b:anyType i:type="c:dateTime" xmlns:c="http://www.w3.org/2001/XMLSchema">2016-08-23T01:03:34+01:00</b:anyType>
                  </a:Values>
                </a:ConditionExpression>
                <a:ConditionExpression>
                  <a:AttributeName>modifiedon</a:AttributeName>
                  <a:Operator>GreaterEqual</a:Operator>
                  <a:Values xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
                    <b:anyType i:type="c:dateTime" xmlns:c="http://www.w3.org/2001/XMLSchema">2016-08-23T01:03:34+01:00</b:anyType>
                  </a:Values>
                </a:ConditionExpression>
              </a:Conditions>
              <a:FilterOperator>Or</a:FilterOperator>
              <a:Filters />
            </a:FilterExpression>
          </a:Filters>
        </a:Criteria>
        <a:Distinct>true</a:Distinct>
        <a:EntityName>contact</a:EntityName>
        <a:LinkEntities>
          <a:LinkEntity>
            <a:Columns>
              <a:AllColumns>false</a:AllColumns>
              <a:Columns xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
                <b:string>statecode</b:string>
                <b:string>new_cancelledmembership</b:string>
                <b:string>py3_membershipproduct</b:string>
                <b:string>new_reasoncancelled</b:string>
                <b:string>new_cancelleddate</b:string>
                <b:string>py3_renewaldate</b:string>
                <b:string>modifiedon</b:string>
              </a:Columns>
            </a:Columns>
            <a:EntityAlias i:nil="true" />
            <a:JoinOperator>Inner</a:JoinOperator>
            <a:LinkCriteria>
              <a:Conditions />
              <a:FilterOperator>And</a:FilterOperator>
              <a:Filters>
                <a:FilterExpression>
                  <a:Conditions>
                    <a:ConditionExpression>
                      <a:AttributeName>py3_membershippaymentdate</a:AttributeName>
                      <a:Operator>NotNull</a:Operator>
                    </a:ConditionExpression>
                  </a:Conditions>
                  <a:FilterOperator>Or</a:FilterOperator>
                </a:FilterExpression>
              </a:Filters>
            </a:LinkCriteria>
            <a:LinkEntities />
            <a:LinkFromAttributeName>contactid</a:LinkFromAttributeName>
            <a:LinkFromEntityName>contact</a:LinkFromEntityName>
            <a:LinkToAttributeName>py3_member</a:LinkToAttributeName>
            <a:LinkToEntityName>py3_membership</a:LinkToEntityName>
            <a:Orders>
                <a:OrderExpression>
                  <a:AttributeName>py3_renewaldate</a:AttributeName>
                  <a:OrderType>Ascending</a:OrderType>
                </a:OrderExpression>
            </a:Orders>
          </a:LinkEntity>
        </a:LinkEntities>
        <a:PageInfo>
          <a:Count>0</a:Count>
          <a:PageNumber>0</a:PageNumber>
          <a:PagingCookie i:nil="true" />
          <a:ReturnTotalRecordCount>false</a:ReturnTotalRecordCount>
        </a:PageInfo>
        <a:NoLock>false</a:NoLock>
      </query>
    </RetrieveMultiple>
    </s:Body>

据我了解,您是想将 link 实体数限制为 1?如果是这样,那是不可能的。 Link-entity Top/Count 被忽略,返回满足连接条件 (inner/outer) 的所有记录。

您必须通过在 "Renewal Date" 上排序并在 "ContactId" 上过滤并使用 "Contact" 作为 link-entity,这将确保只返回 1 "Membership" 个实体。