说我有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实现这一目标的正确方法是什么?有可能吗?
答案 0 :(得分:1)
您可以在映射配置中指定过滤器:
Mapper.CreateMap<SourceClass, DestinationClass1>()
.ForMember(dest => dest.InnerCollection,
opt => opt.MapFrom(src => src.InnerCollection.Where(o => o.Value == src.CustomValue)));