Используйте Automapper для сопоставления списка объектов с одним объектом, используя значения свойств из источника - PullRequest
0 голосов
/ 21 июня 2020

Источник:

public class Message 
{
    public DateTime AcceptedDate { get; set; }
    public List<PriceDetail> PriceDetails { get; set; }
}

public class PriceDetail 
{
    public string ServiceCode { get; set; }
    public string ServiceValue { get; set; }
}

Назначение:

public class GroupEntity 
{
    public DateTime AcceptedDate { get; set; }
    public List<PlanEntity> Plans { get; set; }
}

public class PlanEntity 
{
    public string MetalLevel { get; set; }
    public string MdCode { get; set; }
    public string RxCode { get; set; }
    public string PercentChange { get; set; }
}

Source PriceDetail может быть примерно таким:

  • ServiceCode = "MetalLevel"
  • ServiceValue = "Gold"

Мне нужно сопоставить PriceDetail с PlanEntity, например:

  • если PriceDetail.ServiceCode = "MetalLevel", затем сопоставьте его с PlanEntity.MetalLevel
  • если PriceDetail.ServiceCode = "RxCode", тогда сопоставьте его с PlanEntity.RxCode
  • et c ..

Я понимаю, что будет жестко закодированный лог c в сопоставлении, но не уверен, как и возможно ли это с помощью автомаппера. Мы очень ценим любые советы или предложения.

1 Ответ

1 голос
/ 21 июня 2020
CreateMap<PriceDetail, PlanEntity>()
           .ForMember(dest => dest.MetalLevel, opt => {
               opt.PreCondition(src => src.ServiceCode=="MetalLevel");
               opt.MapFrom(src => src.ServiceCode);
           });
CreateMap<PriceDetail, PlanEntity>()
           .ForMember(dest => dest.RxCode, opt => {
               opt.PreCondition(src => src.ServiceCode=="RxCode");
               opt.MapFrom(src => src.ServiceCode);
           });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...