繁体   English   中英

如何在CRM 2016中比较两个参与者列表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM