如何使用AutoMapper将一个列表映射到两个列表?

时间:2016-07-22 07:05:43

标签: c# automapper

如果我有以下课程:

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个模型列表中。

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>();

逆转这一点并不是一件容易的事,你最好将其作为一个单独的问题发布