using System.Collections;
using System.Collections.Generic;
using AutoMapper.EquivalencyExpression;
public static void Main()
var config = new MapperConfiguration(cfg =>
cfg.CreateMap<TradeShapePeriod, TradeShapePeriod>().EqualityComparison((src, dest) => src.Id == dest.Id);
cfg.CreateMap<TradeShapeVersion, TradeShapeVersion>().EqualityComparison((src, dest) => src.Id == dest.Id);
cfg.CreateMap<TradeShape, TradeShape>();
var mapper = config.CreateMapper();
var source = new TradeShape
Items = new List<TradeShapeVersion>
SubItems = new List<TradeShapePeriod>
new TradeShapePeriod { Id = 1, Description = "SourceSubItem1" }
SubItems = new List<TradeShapePeriod>
new TradeShapePeriod { Id = 2, Description = "SourceSubItem2" }
var destination = new TradeShape
Items = new List<TradeShapeVersion>
Name = "DestinationItem1",
SubItems = new List<TradeShapePeriod>
new TradeShapePeriod { Id = 1, Description = "DestinationSubItem1" },
new TradeShapePeriod { Id = 2, Description = "DestinationSubItem2" }
var finalDestination = mapper.Map(source, destination);
Console.WriteLine(JsonConvert.SerializeObject(source));
Console.WriteLine(JsonConvert.SerializeObject(MapSourceDestination(mapper, source, destination)));
Console.WriteLine("Hello World");
public static TradeShape MapSourceDestination(IMapper mapper, TradeShape src, TradeShape dest)
var destResult = mapper.Map<TradeShape>(dest);
var destItems = new List<TradeShapeVersion>();
foreach(var srcItem in src.Items){
public class TradeShapePeriod
public int Id { get; set; }
public string Description { get; set; }
public class TradeShapeVersion
public int Id { get; set; }
public string Name { get; set; }
public List<TradeShapePeriod> SubItems { get; set; }
public List<TradeShapeVersion> Items { get; set; }