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

Querying Lookup Property Attribute with "Name" in Opportunity Entity - Dynamics CRM Online

我在连接到动态 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"添加条件吗?

是的,只需在"parentaccountid"的末尾添加"name"

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

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

然后下载 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,并查询关联帐户的名称。