如何比较CRM 2016中的双方名单
问题描述:
我有约会中需要的人员的两个派对列表。一个来自PreEntity,另一个来自PostEntity,我想比较它们以找到人员的变化,但不起作用,尽管这两个列表有许多常见的人员。如何比较CRM 2016中的双方名单
var requiredPreImage = preImage.GetAttributeValue<EntityCollection>("requiredattendees");
var requiredPostImage = postImage.GetAttributeValue<EntityCollection>("requiredattendees");
foreach (var required in requiredPreImage.Entities)
{
if (!requiredPostImage.Entities.Contains(required))
{
SendEmail(); // you have deleted from appointment
}
}
答
你的问题是你认为Contains正在做一件神奇的事情,它真的没有做。它只是使用Object
类的标准Equals
比较。因此,除非对象具有相同的确切引用(并且它们不会在这种情况下),否则它将永远不会在Entities集合中找到该对象。
您需要先只要通过这些由ID获得postImage实体ID的列表,然后搜索:
var requiredPreImage = preImage.GetAttributeValue<EntityCollection>("requiredattendees");
var requiredPostImageIds = postImage.GetAttributeValue<EntityCollection>("requiredattendees").Entities.Select(e => e.Id).Distinct().ToDictionary(id => id);
foreach (var required in requiredPreImage.Entities)
{
if (!requiredPostImageIds.Contains(required.Id))
{
SendEmail(); // you have deleted from appointment
}
}
阅读本https://community.dynamics.com/crm/b/magnetismsolutionscrmblog /存档/ 2015/09/07 /劳动与动力学-CRM活动,党名单,在-C-插件 –