使用AutoMapper将IEnumerable映射到具有一个列表作为属性的类

时间:2014-07-29 15:09:35

标签: c# mapping automapper

我收到一个IEnumerable< Class1>来自第三方api。

我想使用Automapper将它映射到以下类:

public class WrapperClass
{
    public List<Class2> Items { get; set; }
}

基本上我认为我需要两个映射:

IEnumerable<Class1> ----> WrapperClass
_______

Class1 ----> Class2

我如何在 Automapper

中进行此操作

1 个答案:

答案 0 :(得分:2)

是的,您必须首先为地图Class1到Class2创建映射,如:

AutoMapper.Mapper.CreateMap<Class1, Class2>().ForMember(x => x.A, y => y.MapFrom(z => z.B));

然后在类上创建地图集合的映射,如:

AutoMapper.Mapper.CreateMap<IEnumerable<Class1>, WrapperClass>().ForMember(x => x.Items, y => y.MapFrom(z => z));

最后你可以像:

一样使用它
var wrapperClass = AutoMapper.Mapper.Map<IEnumerable<Class1>, WrapperClass>(/* list */);

以下三个用于此示例的类:

public class WrapperClass
{
    public List<Class2> Items { get; set; }
}

public class Class2 {
    public int A { get; set; }
}

public class Class1
{
    public int B { get; set; }
}