Как сопоставить первый элемент в коллекции с AutoMapper - PullRequest
5 голосов
/ 22 ноября 2011

У меня есть объект Foo gen'd с EF, у него есть свойство навигации Bar, которое одно к многим, но должно было быть одно к одному.В любом случае, когда я запрашиваю Foo, я также хотел бы получить первый и единственный элемент из коллекции Bar и сопоставить их с расплющенным Biz Dto, как мне это сделать?в моей конфигурации AutoMapper я бы создал карту, которая выглядела как ????

        Mapper.CreateMap<Foo, Biz>()
            .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.CLIENTID))
            .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.Bar.FirstOrDefault???))

Спасибо, Стивен

Ответы [ 2 ]

7 голосов
/ 16 мая 2013

Используйте FirstOrDefault() в коллекции Bar при ее отображении:

opt.MapFrom(src => src.Bar.FirstOrDefault())
0 голосов
/ 22 ноября 2011

Дано:

public class Foo{
 public ICollection<Bar> Bars { get; set; }
}

Решение:

var result = from item in FooCollection
             select new { FirstBar = item.Bars.FirstOrDefault() };

, где FooCollection is IQueryable<Foo>

Используйте FirstOrDefault, чтобы не возникало исключений в случае отсутствия связанных баров

должен сделать это, я думаю ...

HTH

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...