2017-01-10 2 views
1

Объект Box имеет свойство SerialNumbers, являющееся списком (или 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, которая является ICollection из SerialNumber s. Мне, в частности, нужно SerialNumberимя. Я пытался сделать src.SerialNumbers.Name, но LINQ это не нравится.

Моя попытка исправить это, чтобы добавить этот код выше предыдущего блока:

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

Но тогда я получаю сообщение об ошибке «Не удается преобразовать лямбда-выражения к типу„строка“, потому что это не тип делегата» ,

Я действительно очень новичок в AutoMapper и чувствую, что кругом в темноте. Может ли кто-нибудь помочь мне в этом?

ответ

1

Просто преобразуйте ваш источник в список.

src.SerialNumbers.ToList() 

Если вам нужно вложенное свойство, сначала выберите это свойство.

src.SerialNumbers.Select(t=>t.Name).ToList() 
Смежные вопросы