2017-09-26 11 views
0

약속에 필요한 사람의 두 명의 당사자 목록이 있습니다. 하나는 PreEntity에서, 다른 하나는 PostEntity에서 그리고 나는 그 사람의 변화를 찾기 위해 그들을 비교하기를 원하지만 두리스트에는 많은 공통점이있다.CRM 2016의 두 당사자 목록을 비교하는 방법

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-lists-in-c-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 
    } 
}