簡體   English   中英

AutoMapper 映射集合到嵌套對象集合

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM