连接到动态 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 应用过滤器。
有什么办法可以添加基于“名称”而不是“Id”的条件?
是的,只需添加"name"
到末尾"parentaccountid"
:
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
, 并查询链接帐户的名称。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句