我正在使用CRM SDK编写API以获取基于“assignedToName”的联系人,该联系人可以是系统用户名或团队名。 我正在使用QueryExpressions。问题是如何为此创建查询表达式和LinkEntities? 目前,QueryExpression for Contact有2个使用LeftOuter连接的链接实体。 一个来自AssignedToID = SystemUserID字段的Contact to SystemUser 另一个来自AssignedToID = TeamID字段的Contact to Team,其中包含一个ConditionExpression,用于“Name”字段=“assignedToName”
拥有2个链接实体的原因是因为我不知道“assignedToName”是属于团队还是属于用户。
这样做的副作用是,现在我在结果中有误报,因为LeftOuter连接在结果集中包含了额外的联系人记录。为此编写QueryExpression的正确方法是什么?
示例代码:
private IEnumerable<Entity> GetContactEntities(string assignedToName, IOrganizationService orgService)
{
QueryExpression qe = new QueryExpression("contact");
LinkEntity linkSystemUser = new LinkEntity("contact", "systemuser", "assignedtoid", "systemuserid", JoinOperator.LeftOuter);
LinkEntity linkTeam = new LinkEntity("contact", "team", "assignedtoid", "teamid", JoinOperator.LeftOuter);
linkSystemUser.LinkCriteria.AddCondition(new ConditionExpression("name",ConditionOperator.Equal,assignedToName));
linkSystemUser.EntityAlias = "linkSystemUser";
linkTeam.LinkCriteria.AddCondition(new ConditionExpression("name",ConditionOperator.Equal,assignedToName));
linkTeam.EntityAlias = "linkTeam";
qe.LinkEntities.Add(linkSystemUser);
qe.LinkEntities.Add(linkTeam);
return orgService.RetrieveMultiple(qe).Entities;
}