我在预约中有两个来自所需人员的党派名单。一个来自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
}
}
答案 0 :(得分:2)
你的问题是你已经假设包含正在做一些神奇的事情,它确实没有做到。它只是使用Equals
类的标准Object
比较。因此,除非对象是完全相同的引用(并且它们不会在这种情况下),否则它将永远不会在实体集合中找到对象。
您首先需要获取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
}
}