Использование Automapper для сопоставления свойства коллекции с массивом примитивов - PullRequest
8 голосов
/ 05 октября 2011

Имеется следующий набор классов:

class Parent
{
    string Name { get; set; }
    List<Child> children { get; set; }
}
class Child
{
     short ChildId { get; set; }
     string Name { get; set; }
}

class ParentViewModel
{
      string Name { get; set; }
      short[] ChildIds { get; set; }
}

Когда я звоню

Mapper.Map<Parent, ParentViewModel>(vm);

Можно ли заставить AutoMapper перевести список Child.ChildId в ParentViewModel.ChildIds?

Я пытался сделать что-то вроде этого:

Mapper.CreateMap<Child, short>()
    .FromMember(dest => dest, opt => opt.MapFrom(src => src.ChildId));
Mapper.CreateMap<Parent, ParentViewModel>()
    .FromMember(dest => dest.ChildIds, opt => opt.MapFrom(src => new[] {src.children}));

Но я получаю сообщение об ошибке, говорящее, что он не знает, как преобразовать список дочерних объектов в int16.Есть предложения?

1 Ответ

12 голосов
/ 06 октября 2011

Используйте запрос LINQ, чтобы получить только ChildIds:

.ForMember(d => d.ChildIds, o => o.MapFrom(s => s.Children.Select(c => c.ChildId).ToArray()));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...