使用Automapper映射两个相同类型的集合时的集合覆盖

时间:2012-05-30 12:13:06

标签: automapper automapper-2

我的课程定义如下

Source {

    public List<Driver> UnreportedDrivers { get; set; }  // count 1

    public List<Driver> LendingLossDrivers { get; set; }  // count 2

    public List<Driver> OtherDrivers { get; set; } // count 1

}

Destination {

    public List<Driver> Drivers { get; set; }  // expected count = 4 after mapping

}

我必须从源到目的地进行映射。 我必须合并来自源的所有集合并将它们映射到Destination。

我已将我的映射定义如下。但这段代码并没有帮助我。 它不是合并所有集合,而是映射最后一个(UnreportedDrivers)覆盖顶部集合。

AutoMapper.Mapper.CreateMap<ServiceModel.MacReconciliationResponse, MacProcessContext>()
                .ForMember(destination => destination.Drivers, source => source.MapFrom(s => s.OtherDrivers))
                .ForMember(destination => destination.Drivers, source => source.MapFrom(s => s.LendingLossDrivers))
                .ForMember(destination => destination.Drivers, source => source.MapFrom(s => s.UnreportedDrivers));

请在这种情况下帮助我。

提前致谢。

1 个答案:

答案 0 :(得分:0)

我只想.Concat您要在一个.ForMember电话中映射的每个列表:

Mapper.CreateMap<Source, Destination>()
    .ForMember(dest => dest.Drivers, opt => opt.MapFrom(src => src.LendingLossDrivers
        .Concat(src.OtherDrivers)
        .Concat(src.UnreportedDrivers)));