2017-01-10 52 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() 
相關問題