不同的映射取决于封闭类

时间:2015-10-23 07:49:04

标签: c# .net automapper

说我有SourceClass

public class SourceClass
{
    IList<InnerClass> InnerCollection{get; set;}

    // other properties...
}

和两个不同的目的地类:

public class DestinationClass1
{
    IList<InnerClassDto> InnerCollection{get; set;}

    // other properties...
}

public class DestinationClass2
{
    IList<InnerClassDto> InnerCollection{get; set;}

    // other properties...
}

最后我配置了我的映射器:

Mapper.Initialize(cfg =>
{
    cfg.CreateMap<SourceClass, DestinationClass1>();
    cfg.CreateMap<SourceClass, DestinationClass2>();
    cfg.CreateMap<InnerClass, InnerClassDto>();
});

但是我需要根据“父”类在我的目标类中填充IList<InnerClassDto>。特别是我需要过滤DestinationClass1的一些元素,并保留DestinationClass2的所有元素。

使用Automapper实现这一目标的正确方法是什么?有可能吗?

1 个答案:

答案 0 :(得分:1)

您可以在映射配置中指定过滤器:

Mapper.CreateMap<SourceClass, DestinationClass1>()
    .ForMember(dest => dest.InnerCollection, 
        opt => opt.MapFrom(src => src.InnerCollection.Where(o => o.Value == src.CustomValue)));