我在连接动态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"?
答案 0 :(得分:2)
是的,只需将"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
,并查询关联帐户的名称。