根据AssignedToName查询Contact实体

时间:2013-05-29 05:23:25

标签: dynamics-crm-2011

我正在使用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;
    }

0 个答案:

没有答案