2013-08-31 68 views
2

我有一個返回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; 
} 

我只想要添加到accountIds列表一個獨特的DBR_ Ç和獨特的帳戶聯繫的_c

舉例來說,如果我有一個DBR數量:

3333和接觸是約翰·史密斯是在Acme的帳戶(添加到列表)

下一個我

3333和接觸是簡·史密斯是在Acme的帳戶(不添加到列表中)

接下來我有

3333和接觸是Bob Smith是在大公司帳戶(添加到列表)

未來

3333,並且聯繫人是Doug公司的大公司賬戶上的Doug Smith(不要添加到列表中)

賬戶的DBR應該是不同的。

在我的方法中,我返回accountIds,但它們並不區分基於DBR。我必須小心,因爲如果DBR編號不同,我不想刪除列表中重複的accountId。這將是列表中的有效元素。

任何幫助,將不勝感激。

謝謝。

回答

3

您可以通過使用本地設置如下或使用Map < 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; 
} 
相關問題