使用" Name"查询查找属性属性在机会实体 - Dynamics CRM Online

时间:2017-07-21 06:43:33

标签: dynamics-crm crm

我在连接动态CRM后检索结果如下:

CrmServiceClient crmConn = new CrmServiceClient(ConfigurationManager.ConnectionStrings["default"].ConnectionString);
IOrganizationService crmService = crmConn.OrganizationServiceProxy;

QueryExpression query = new QueryExpression("opportunity");    
query.Criteria = new FilterExpression();
query.Criteria.AddCondition("name", ConditionOperator.Like, "14%");

EntityCollection results = crmService.RetrieveMultiple(query);

现在因为名字是字符串类型,我能够添加条件&执行操作&得到结果。

我的要求是我要添加另一个过滤器,这是一个查找属性" parentaccountid"。

我尝试添加如下所示的条件,但会抛出强制转换异常错误,因为它只需要GUID。

query.Criteria.AddCondition("parentaccountid", ConditionOperator.Like, "%In%");

注意:当我从早期结果中检索时,parentaccountid的类型是Microsoft.Xrm.Sdk.EntityReference

原因是我们只能使用GUID为parentaccountid应用过滤器。

有没有办法根据" Name"添加条件?而不是" Id"?

1 个答案:

答案 0 :(得分:2)

是的,只需将"name"添加到"parentaccountid"的末尾:

query.Criteria.AddCondition("parentaccountidname", ConditionOperator.Like, "%In%");

您会注意到,如果您创建这样的高级查找:

enter image description here

然后下载FetchXML,CRM只需将"name"附加到查找属性名称的末尾:

<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
  <entity name="opportunity">
    <attribute name="name" />       
    <order attribute="name" descending="false" />
    <filter type="and">
      <condition attribute="parentaccountidname" operator="like" value="%In%" />
    </filter>
  </entity>
</fetch>

另一种解决方案是使用LinkEntity,并查询关联帐户的名称。