using System.Collections;
using System.Collections.Generic;
using AutoMapper.EquivalencyExpression;
public static void Main()
var config = new MapperConfiguration(cfg =>
cfg.AddCollectionMappers();
cfg.CreateMap<SubItem, DestinationSubItem>().EqualityComparison((src, dest) => src.Id == dest.Id);
cfg.CreateMap<SourceItem, DestinationItem>().EqualityComparison((src, dest) => src.Id == dest.Id);
cfg.CreateMap<SourceClass, DestinationClass>();
var mapper = config.CreateMapper();
var source = new SourceClass
Items = new List<SourceItem>
SubItems = new List<SubItem>
new SubItem { Id = 1, Description = "SourceSubItem1" }
SubItems = new List<SubItem>
new SubItem { Id = 1, Description = "SourceSubItem2" }
var destination = new DestinationClass
Items = new List<DestinationItem>
Name = "DestinationItem1",
SubItems = new List<DestinationSubItem>
new DestinationSubItem { Id = 1, Description = "DestinationSubItem1" },
new DestinationSubItem { Id = 2, Description = "DestinationSubItem2" }
Name = "DestinationItem2",
SubItems = new List<DestinationSubItem>
new DestinationSubItem { Id = 3, Description = "DestinationSubItem3" },
new DestinationSubItem { Id = 4, Description = "DestinationSubItem4" }
var finalDestination = mapper.Map(source, destination);
Console.WriteLine(JsonConvert.SerializeObject(source));
Console.WriteLine(JsonConvert.SerializeObject(destination));
Console.WriteLine(JsonConvert.SerializeObject(finalDestination));
Console.WriteLine("Hello World");
public int Id { get; set; }
public string Description { get; set; }
public int Id { get; set; }
public string Name { get; set; }
public List<SubItem> SubItems { get; set; }
public List<SourceItem> Items { get; set; }
public class DestinationSubItem
public int Id { get; set; }
public string Description { get; set; }
public class DestinationItem
public int Id { get; set; }
public string Name { get; set; }
public List<DestinationSubItem> SubItems { get; set; }
public class DestinationClass
public List<DestinationItem> Items { get; set; }