如何比较 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 中的两个方列表的主要内容,如果未能解决你的问题,请参考以下文章