[英]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);
對於變通方法,我創建了從Prices
到PriceDto
而不是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.