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

Bra*_*ets 1 .net c# automapper

我所拥有的是这样的:

public class Rate
{
    public List<Charge> CarrierCharges { get; set; }
    public List<Charge> CustomerCharges { get; set; }
    public List<Charge> ThirdPartyCharges { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我需要它映射到这个:

public class Quote
{
    public List<Charge> Charges { get; set; }        
}
Run Code Online (Sandbox Code Playgroud)

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

mam*_*are 6

您想要执行以下操作:

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