尝试使用AutoMapper将对象的属性映射到字符串

时间:2017-01-10 01:07:03

标签: c# asp.net-mvc linq lambda automapper

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

这是我的代码:

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,这是{{1}的ICollection }秒。不过,我特别需要SerialNumber名称属性。我试过SerialNumber,但LINQ并不喜欢这样。

我尝试解决此问题的方法是将此代码添加到上一个块之上:

src.SerialNumbers.Name

然后我得到了错误&#34;无法将lambda表达式转换为&#39; string&#39;因为它不是代表类型&#34;。

我对AutoMapper真的很陌生,觉得我在黑暗中徘徊。有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

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

src.SerialNumbers.ToList()

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

src.SerialNumbers.Select(t=>t.Name).ToList()