0

我正在使用 CRM SDK 编写一个 API,以获取基于“assignedToName”的联系人,该联系人可以是系统用户名或团队名称。我正在使用查询表达式。问题是如何为此创建查询表达式和 LinkEntities?目前,用于联系人的 QueryExpression 有 2 个使用 LeftOuter 连接的链接实体。一个在 AssignedToID = SystemUserID 字段上从 Contact 到 SystemUser,另一个从 Contact 到 Team 在 AssignedToID = TeamID 字段上,其中“名称”字段 =“assignedToName”的 ConditionExpression

有 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;
    }
4

0 回答 0