List Salesforce apex触发器列表中存在重复id

List Salesforce apex触发器列表中存在重复id,list,triggers,duplicates,salesforce,List,Triggers,Duplicates,Salesforce,在我的订单插入触发器中,我需要更新订单信息的联系人,我知道我的联系人列表中有重复记录。所以我用 联系人[]contactToUpdate=新列表(新设置(联系人列表)); 删除重复项 但我仍然收到错误消息:在列表中重复 有什么想法吗 谢谢你的观点是正确的,一个集合包含唯一的元素,但问题是你处理的是contact实例:仅仅因为两个实例在DB中引用同一个contact,它们在内存中仍然是不同的对象实例,因此是唯一的,结果是,您可以在集合中输入表示具有相同id的相同联系人的条目 最简单的方法是使用id

在我的订单插入触发器中,我需要更新订单信息的联系人,我知道我的联系人列表中有重复记录。所以我用 联系人[]contactToUpdate=新列表(新设置(联系人列表)); 删除重复项

但我仍然收到错误消息:在列表中重复

有什么想法吗


谢谢你的观点是正确的,一个集合包含唯一的元素,但问题是你处理的是contact实例:仅仅因为两个实例在DB中引用同一个contact,它们在内存中仍然是不同的对象实例,因此是唯一的,结果是,您可以在集合中输入表示具有相同id的相同联系人的条目

最简单的方法是使用id地图联系:

map<Id, Contact> contactMap = new map<id, Contact>();

非常感谢,但我有另一个问题:那么当记录被识别为实例时,当它被识别为记录时?在代码中,它从来没有被识别为“记录”,它始终是表示数据库对象的类的实例。如果您确实从数据库中选择了一个联系人,将其存储在变量c中,然后将c添加到集合中两次,那么它将只显示一次,因为它是一个实例。两次查询两个变量会创建两个不同的实例,这两个实例都可以添加。有人告诉过你你很了不起吗?非常感谢。嗨,李,因为想找个更好的地方告诉你这件事,我们下周将举行我们的第一次墨尔本开发者小组会议-嗨,马特,非常感谢你组织这样一个活动!我一定会在那里见到你。干杯
update mapContacts.values();