using System.Collections.Generic;
public static void Main()
Console.WriteLine("Identify the Persons as per Enum Provided :");
List<Person> existingPersons = new List<Person>
new Person { Id = 1, Name = "Person 1" },
new Person { Id = 3, Name = "Person 33" },
new Person { Id = 5, Name = "Person 5" },
new Person { Id = 7, Name = "Person 7" },
new Person { Id = 9, Name = "Person 9" }
List<Person> newPersons = new List<Person>
new Person { Id = 3, Name = "Person 3" },
new Person { Id = 6, Name = "Person 6" },
new Person { Id = 9, Name = "Person 99" },
new Person { Id = 12, Name = "Person 12" },
new Person { Id = 15, Name = "Person 15" }
var result = GetPersonUpdates(existingPersons,newPersons);
foreach(var item in result)
Console.WriteLine(item.Person.Id + " " + item.Person.Name+ " " + item.UpdateType);
Console.WriteLine("Completed !!");
static IEnumerable<PersonAdditionalDetails> GetPersonUpdates(IEnumerable<Person> existingPersons,IEnumerable<Person> newPersons)
var result = new List<PersonAdditionalDetails>();
foreach (var newPerson in newPersons)
bool exists = existingPersons.Any(p => p.Id == newPerson.Id);
result.Add(new PersonAdditionalDetails { Person = newPerson, UpdateType = UpdateType.Add });
var existingPerson = existingPersons.First(p => p.Id == newPerson.Id);
if (existingPerson.Name != newPerson.Name)
result.Add(new PersonAdditionalDetails { Person = newPerson, UpdateType = UpdateType.Modify });
foreach (var existingPerson in existingPersons)
bool exists = newPersons.Any(p => p.Id == existingPerson.Id);
result.Add(new PersonAdditionalDetails { Person = existingPerson, UpdateType = UpdateType.Delete });
public int Id { get; set; }
public string Name { get; set; }
public class PersonAdditionalDetails
public Person Person { get; set; }
public UpdateType UpdateType { get; set; }