簡體   English   中英

AutoMapper 將 map Object 放入對象列表

[英]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;
        });
}

演示 @ .NET Fiddle

暫無
暫無

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

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