如何比较 CRM 2016 中的两个方列表

Posted

技术标签:

【中文标题】如何比较 CRM 2016 中的两个方列表【英文标题】:How to Compare two party lists in CRM 2016 【发布时间】:2018-03-07 20:39:39 【问题描述】:

我有两份来自所需人员的约会名单。一个来自 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
     
  

【问题讨论】:

阅读此community.dynamics.com/crm/b/magnetismsolutionscrmblog/archive/… 【参考方案1】:

您的问题是您假设 Contains 正在做一些它实际上并没有做的神奇事情。它只是对Object 类使用标准的Equals 比较。因此,除非对象是相同的精确引用(在这种情况下它们不会是),否则它永远不会在 Entities 集合中找到该对象。

您需要首先获取 postImage 实体的 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
    

【讨论】:

以上是关于如何比较 CRM 2016 中的两个方列表的主要内容,如果未能解决你的问题,请参考以下文章

如何将python中的两个列表与if loc条件进行比较

如何放置返回语句以比较两个列表中的所有值?

如何解读卡方检验结果?跪求大神

PYTHON:如何比较两个列表中的重复单词?

卡方分布与卡方检验

java 比较 两列表