[英]AutoMapper to map Object into List of Objects
我想要 map 和 object 的 PersonDetails class 到詳細信息列表 object。PersonDetails class 是
public class PersonDetails
{
public PersonItems PersonItems{get;set;}
public int CreatedBy {get;set;}
public string PersonCode {get;set;}
}
public class PersonItems
{
public string ItemCode {get; set;}
public List<string> ItemColors {get;set;}
public string ItemName {get; set;}
}
對於每個 ItemColor 嘗試 map 這到以下列表 object class:
public class Seller{
public string SellerCode {get;set;}
public Details details {get; set;}
}
public class Details
{
public string ItemCode {get; set;}
public string ItemColor {get;set;}
public string ItemName {get; set;}
public string PersonCode {get;set}
}`
我通過在服務 class 中對 ItemColors 應用循環來嘗試以下代碼,調用 automapper。
List<Details> detailsList = new();
foreach( string ItemColor in PersonDetails.PersonItems.ItemColor){
Details details = _mapper.Map<PersonDetails>( details) ;
details.Add(details);
}
我創建了一個單獨的映射器 class 來注冊映射器方法。
public void RegisterPersonDetailstoDetailsObjectList(){
CreateMap<PersonDetails,Details>()
.ForMember(d => d.details.PersonCode, src=> src.MapFrom(src => src.PersonCode
.ForMember(d => d.PersonItems, src => src.MapFrom( s => new Details
{
ItemCode = s.PersonItems.ItemCode,
**ItemColor = s.PersonItems.ItemColor,**
ItemName = s.PersonItems.ItemName
}
}));
}
無法弄清楚以粗體文本從循環中獲取每個 ItemColor 並傳遞給此自動映射器方法。 基本上我想遍歷 itemColor 並將其分配給映射的每個 ListOf object。
根據我對你的問題的理解,你似乎 map 從PersonDetails
object 到List<Details>
列表。
以下映射需要自定義類型轉換器:
public void RegisterPersonDetailstoDetailsObjectList()
{
CreateMap<PersonDetails, Details>()
.ForMember(d => d.PersonCode, src=> src.MapFrom(src => src.PersonCode))
.ForMember(d => d.ItemCode, src => src.MapFrom(src => src.PersonItems.ItemCode))
.ForMember(d => d.ItemName, src => src.MapFrom(src => src.PersonItems.ItemName));
CreateMap<PersonDetails, List<Details>>()
.ConvertUsing((src, dest, ctx) =>
{
dest = new List<Details>();
foreach (string itemColor in src.PersonItems.ItemColors)
{
var details = ctx.Mapper.Map<Details>(src);
details.ItemColor = itemColor;
dest.Add(details);
}
return dest;
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.