[英]AutoMapper mapping collection to nested objects collection
我正在嘗試將 map 和具有集合屬性的 object 連接到另一個 object,其嵌套 class 包含源 collections 的映射版本,但我似乎無法弄清楚所需的適當映射。
下面是我的 class 和嘗試映射。
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 class 時,它工作正常。
Mapper.CreateMap<TypeA, int>()
.ConvertUsing(a => a.Id);
Mapper.CreateMap<TypeB, int>()
.ConvertUsing(b => b.Id);
我試過添加一個 map,例如,但我找不到在 collections 上強制映射的方法
Mapper.CreateMap<Source, Destination>()
.ForMember(d => d.Inner,
opt.MapFrom(s => new DestinationInner()
{
// not sure if I can assign anything here
A =
B =
}));
MapFrom 是適合在這里使用的方法嗎 - 或者我是從錯誤的方向接近這個?
另一種方法是不對 collections 使用 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(),
}));
盧錫安在評論中給出了答案:
ForPath(d => d.Inner.A, o => o.MapFrom(s => s.A))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.