Мне нужно объединить 2 списка объектов в 1, взяв некоторые свойства из объектов в списке 1 и некоторые свойства из объектов в списке 2, используя выражение сравнения с использованием Automapper
Я пробовал Automapper.Collection (https://github.com/AutoMapper/AutoMapper.Collection) nuget, но действия по умолчанию:
- Если совпадение идентификатора будет отображаться с 1 по 2
- Если 2 существует и 1 не добавляется в коллекцию
- Если 1 существует, а 2 не удаляется из коллекции
но я хочу отобразить только в случае совпадения, если нет, я хочу проигнорировать запись
public class Class1
{
public string Id { get; set; }
public string Code { get; set; }
}
public class Class2
{
public string Id { get; set; }
public string Description { get; set; }
}
public class Class3
{
public string NewId { get; set; }
public string NewCode { get; set; }
public string NewDescription { get; set; }
}
var configuration = new MapperConfiguration(cfg =>
{
cfg.CreateMap<Class1, Class3>()
.ForMember(dest => dest.NewId, opt => opt.MapFrom(src => src.Id))
.ForMember(dest => dest.NewCode, opt => opt.MapFrom(src => src.Code))
;
cfg.CreateMap<Class2, Class3>()
.ForMember(dest => dest.NewDescription, opt => opt.MapFrom(src => src.Description))
;
});
var mapper = configuration.CreateMapper();
var class1List = new List<Class1>
{
new Class1 {Id = "1", Code = "code1"},
new Class1 { Id = "2", Code = "code2" },
new Class1 {Id = "3", Code = "code3"}
};
var class2List = new List<Class2>
{
new Class2 {Id = "2", Description = "desc2"}
};
var class3List = mapper.Map<List<Class3>>(class1List);
mapper.Map(class2List, class3List);
Я хочу, чтобы "class3List" в конце содержал 3 элемента, элемент с идентификатором "2" должен иметь и код, и описание.