[英]How to Compare two party lists in CRM 2016
我有两个来自约会指定人员的聚会清单。 一位来自PreEntity,一位来自PostEntity,我想将它们进行比较以便找到人员中的更改,但由于两个列表中有许多普通人,因此无法正常工作。
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集合中找到该对象。
您首先需要获取postImage实体的ID列表,然后按ID搜索这些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
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.