2017-01-10 112 views
1

我的对象Box具有属性SerialNumbers,它是<SerialNumber>对象的列表(或ICollection)对象。我需要将每个SerialNumber.Name属性映射到我的BoxedElectrodesRowModel中的字符串列表中的字符串。尝试使用AutoMapper将对象的属性映射到字符串

这里是我的代码:

c.CreateMap<Box, BoxedElectrodesRowModel>() 
    .ForMember(dest => dest.BoxId, opts => opts.MapFrom(src => src.BoxID)) 
    .ForMember(dest => dest.SerialNumbers, opts => opts.MapFrom(src => src.SerialNumbers)) 
    .ForMember(dest => dest.DateCreated, opts => opts.MapFrom(src => src.DateCreated)); 

如果在第三行注意到,我尝试转换dest.SerialNumbers(这是在型号字符串列表)来src.SerialNumbers这是一个SerialNumber ICollection的秒。不过,我特别需要SerialNumber名称属性。我试过做src.SerialNumbers.Name,但LINQ不喜欢那样。

我试图解决这个问题是添加该代码前面的块的上方:

c.CreateMap<SerialNumber, string>() 
    .ConvertUsing(src => src.Name); 

但后来我得到错误“无法转换lambda表达式到类型‘串’,因为它不是一个委托类型” 。

对于AutoMapper,我真的很新,觉得我在黑暗中徘徊。有人能帮助我解决这个问题吗?

回答

1

只需将您的来源转换为列表。

src.SerialNumbers.ToList() 

如果您需要嵌套属性,请先选择该属性。

src.SerialNumbers.Select(t=>t.Name).ToList() 
相关问题