2017-09-26 12 views
0

私は、予定担当者から2つのパーティリストを予約しています。 PreEntityからのものとPostEntityからのものと私は人の変化を見つけるためにそれらを比較したいが、2つのリストが多くの共通の人を持っているとは思えない。CRM 2016の2つのパーティーリストを比較する方法

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

https://community.dynamics.com/crm/bこれを読みます/ magnetismsolutionscrmblog/archive/2015/09/07/working-with-dynamics-crm-activity-party-c-p-plugins –

答えて

1

あなたの問題は、あなたが本当にやっていない魔法を行っていると仮定していることです。 Objectクラスの標準Equalsの比較を使用しているだけです。したがって、オブジェクトが同じ正確な参照でない限り(そして、この場合は存在しない)、Entitiesコレクション内のオブジェクトは決して見つけられません。

あなたは最初だけのidでそれらを検索し、その後、postImageエンティティの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 
    } 
} 
関連する問題