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