簡體   English   中英

自動映射:將包含內部對象列表的單個對象映射到剛才列出的對象

[英]Automapper: Map single object with list of objects inside to just list

我有以下dto對象:

public class PriceDto
{
   public string Ticker {get; set;}
   public double Open {get; set;}
   public double Close {get; set;}
}

源對象:

public class RemoteData
{
   public Security Security { get; set; }
   public IList<Prices> Prices{ get; set; }
}

public class Security
{
   public string Ticker {get; set;}
}

public class Prices
{
    public double Open {get; set;}
    public double Close {get; set;}
}

結果,我想得到PriceDto對象的集合。 我知道如何映射Ticker屬性。 但是,我不知道如何正確映射Prices

CreateMap<RemoteData, PriceDto>()
    .ForMember(d => d.Ticker, opt => opt.MapFrom(s => s.Security.Ticker));

此外,Automapper無法找到配置,因為我有單個RemoteData ,但我想得到IList<PriceDto>

var json = await rangeUrl.GetJsonAsync<RemoteData>();
var dtos = _mapper.Map<IList<PriceDto>>(json);

對於變通方法,我創建了從PricesPriceDto而不是RemoteData地圖,然后只使用foreach來分配Ticker 但是,我想了解如何使用automapper進行操作。

這種情況的一個好方法是使用.ConvertUsing

...
            Mapper.Initialize(cfg =>
            {
                cfg.CreateMap<RemoteData, List<PriceDto>>()
                    .ConvertUsing(source => source.Prices?.Select(p => new PriceDto
                        {
                            Ticker = source.Security?.Ticker,
                            Open = p.Open,
                            Close = p.Close
                        }).ToList()
                    );
            });
...

有關自定義類型轉換器的更多信息,

我希望它有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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