我正在使用.NET 4.5和Automapper 3.0
我有一个包含Child对象数组的源对象作为属性:
public class Source
{
public string Name { get; set; }
public Child[] Values { get; set; }
}
public class Child
{
public string Val1 { get; set; }
public string Val2 { get; set; }
}
我的目标对象是平的
public class Dest
{
public string Name { get; set; }
public string Val1 { get; set; }
public string Val2 { get; set; }
}
我需要做的是将Source的单个实例映射到Dest的集合(IList,Dest [],无论哪种集合都无关紧要。)
也就是说,对于具有
的Source的单个实例Name = "MySource"
Dest = [Val1 = "A", Val2 = "B"]
[Val1 = "C", Val2 = "D"]
我需要返回一个2项的Dest
集合Dest[0]: {Name="MySource", Val1="A", Val2="B"}
Dest[1]: {Name="MySource", Val1="C", Val2="D"}
这可以通过automapper完成吗?
我尝试了以下方法,但没有一项工作(显然):
Mapper.CreateMap<Source,Dest>();
var items = Mapper.Map<Source,Dest>();
Mapper.CreateMap<Source,Dest[]>();
var items = Mapper.Map<Source,Dest[]>();
Mapper.Createmap<Source,Dest>();
var items = Mapper.map<Source,Dest[]>();
答案 0 :(得分:2)
使用ConstructUsing
。
Mapper.CreateMap<Source, Dest[]>()
.ConstructUsing(s => s.Values.Select(c => new Dest
{
Name = s.Name,
Val1 = c.Val1,
Val2 = c.Val2
}).ToList());