0

私のクラスは以下のように定義されています

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

}

ソースから宛先にマップする必要があります。ソースからのすべてのコレクションをマージして、それらを宛先にマップする必要があります。

マッピングを以下のように定義しました。しかし、このコードは私を助けません。すべてのコレクションをマージする代わりに、最後のコレクション(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));

このシナリオで私を助けてください。

前もって感謝します。

4

1 に答える 1

0

.Concat1回の呼び出しでマップしたい各リストを単純にし.ForMemberます:

Mapper.CreateMap<Source, Destination>()
    .ForMember(dest => dest.Drivers, opt => opt.MapFrom(src => src.LendingLossDrivers
        .Concat(src.OtherDrivers)
        .Concat(src.UnreportedDrivers)));
于 2012-05-30T12:48:01.427 に答える