我正在尝试将具有collection属性的对象映射到具有嵌套类的另一个对象,该嵌套类包含源集合的映射版本,但是我似乎无法找出所需的适当映射。
下面是我的课程和尝试的映射。
public class TypeA
{
public int Id;
public string Description;
}
public class TypeB
{
public int Id;
public int Code;
}
public class Source
{
public ICollection<TypeA> A;
public ICollection<TypeB> B;
}
public class Destination
{
public DestinationInner Inner;
}
public class DestinationInner
{
public ICollection<int> A;
public ICollection<int> B;
}
我定义了以下映射,当目标集合位于父级别而不是DestinationInner类中时,可以正常工作。
Mapper.CreateMap<TypeA, int>()
.ConvertUsing(a => a.Id);
Mapper.CreateMap<TypeB, int>()
.ConvertUsing(b => b.Id);
我尝试添加一个地图,例如,但是我找不到在这里强制在集合上进行映射的方法
Mapper.CreateMap<Source, Destination>()
.ForMember(d => d.Inner,
opt.MapFrom(s => new DestinationInner()
{
// not sure if I can assign anything here
A =
B =
}));
是从适当的方法中使用Map还是在错误的方向上进行操作?
另一种选择是不对集合使用AutoMapper,而仅使用Linq,但是我认为必须有一种方法可以完全使用AutoMapper:
Mapper.CreateMap<Source, Destination>()
.ForMember(d => d.Inner,
opt.MapFrom(s => new DestinationInner()
{
A = s.A.Select(a => a.Id).ToList(),
B = s.B.Select(b => b.Id).ToList(),
}));