自动映射将多个列表从源映射到目标上的单个列表

时间:2017-07-11 17:55:17

标签: c# .net automapper

我拥有的是:

public class Rate
{
    public List<Charge> CarrierCharges { get; set; }
    public List<Charge> CustomerCharges { get; set; }
    public List<Charge> ThirdPartyCharges { get; set; }
}

我需要它映射到这个:

public class Quote
{
    public List<Charge> Charges { get; set; }        
}

需要发生的是需要添加到报价单上的费用。另外棘手的部分是,在Quote charge上,有一个Type字段需要根据它映射的列表来设置。因此,如果它们是CarrierCharges,则需要将类型设置为Carrier等。我正在使用AfterMap执行此操作,但我想要查看是否有更好的方法。

1 个答案:

答案 0 :(得分:0)

Mapper.CreateMap<Rate, Quote>()
    .ForMember(t => t.Charges, o => o.MapFrom(s => s.CarrierCharges.Concat(s.CustomerCharges).Concat(s.ThirdPartyCharges).MapList<QuoteNamespace.Charge>()));