如果我有以下课程:
public MainModel
{
public List<ChildModel> Children {get; set;}
}
public ChildModel
{
public bool IsDifferent {get; set;}
}
public MainDto
{
public List<ChildDto> Children {get; set;}
public List<DifferentChildDto> Different {get; set;}
}
public ChildDto
{ }
public DifferentChildDto
{ }
使用AutoMapper,是否可以根据属性将ChildModel
列表拆分并映射到2个单独的列表中?
最终结果应该是IsDifferent
属性集的项目将在Different
列表中,而其余项目在Children
列表中。
映射也应该反向工作,即。将两个DTO列表合并到1个模型列表中。
答案 0 :(得分:0)
Mapper.CreateMap<MainModel, MainDto>()
.ForMember(d => d.Children, o => o.MapFrom(s => s.Children.Where(c => !c.IsDifferent)))
.ForMember(d => d.Different, o => o.MapFrom(s => s.Children.Where(c => c.IsDifferent)));
Mapper.CreateMap<ChildModel, ChildDto>();
Mapper.CreateMap<ChildModel, DifferentChildDto>();
逆转这一点并不是一件容易的事,你最好将其作为一个单独的问题发布