3

我有一个方法返回一个Map<Id, List<Id>>

这是方法:

private Map<Id, List<Id>> getDbrToAccountMap(Set<Id> dbrIds) {
    Map<Id, List<Id>> dbrAccountMap = new Map<Id, List<Id>>();
    List<Id> accountIds = new List<Id>();
    for(DBR_Group_Member__c member : [select Id, Contact__c, Contact__r.AccountId, DBR__c from DBR_Group_Member__c where DBR__c in: dbrIds]) {
        if(accountIds.isEmpty()) {
            accountIds = new List<Id>();
            dbrAccountMap.put(member.DBR__c, accountIds);
        }
        accountIds.add(member.Contact__r.AccountId);
    }
    return dbrAccountMap;
}

我只想将唯一 DBR_c和联系人_c的唯一帐户添加到 accountIds 列表中

例如,如果我的 DBR 编号为:

3333,联系人是 Acme 帐户上的 John Smith(添加到列表中)

接下来我有

3333,联系人是 Acme 帐户上的 Jane Smith(不要添加到列表中)

接下来我有

3333,联系人是 Big Company 帐户上的 Bob Smith(添加到列表中)

接下来我有

3333,联系人是大公司帐户上的 Doug Smith(不要添加到列表中)

要考虑的 DBR 应该是不同的。

在我的方法中,我返回了 accountId,但它们在 DBR 的基础上并不不同。我必须小心,因为如果 DBR 编号不同,我不想在列表中删除重复的 accountId。那将是列表中的有效元素。

任何帮助,将不胜感激。

谢谢。

4

1 回答 1

3

您可以通过使用以下本地集或使用 aMap < Id, Set < Id >>作为返回值来解决此问题。

private Map < Id, List < Id >> getDbrToAccountMap(Set < Id > dbrIds) {

    Map < Id, List < Id >> dbrAccountMap = neenter code herew Map < Id, List < Id >> ();
    Set < String > alreadyExistSet = new Set < String > ();
    List < Id > accountIds = new List < Id > ();
    for (DBR_Group_Member__c member: [select Id, Contact__c, Contact__r.AccountId, DBR__c from DBR_Group_Member__c where DBR__c in : dbrIds]) {
        if (dbrAccountMap.get() == null) {
            dbrAccountMap.put(member.DBR__c, new List < Id > );
        }
        if (!alreadyExistSet.contains('' + member.DBR__c + member.Contact__r.AccountId)) {
            dbrAccountMap.get(member.DBR__c).add(member.Contact__r.AccountId);
            alreadyExistSet.add('' + member.DBR__c + member.Contact__r.AccountId);
        }
    }
    return dbrAccountMap;
}
于 2013-09-01T03:39:43.760 回答