Ian Vink
Ian Vink

Reputation: 68740

Automapper: Checking for null in MapFrom

Using version 4.

How do I check for null when doing a map? I tried the .Value, but that's not there on a Null:

        Mapper.CreateMap<Agenda, AgendaViewModel>()
            .ForMember(x => x.DateApproved, 
               y => y.MapFrom(s =>  DateTime.SpecifyKind(s.DateApproved.Value, DateTimeKind.Utc)));

Upvotes: 13

Views: 19528

Answers (2)

Will Ray
Will Ray

Reputation: 10879

Alternatively, you can just check the HasValue property prior to mapping:

Mapper.CreateMap<Agenda, AgendaViewModel>()
     .ForMember(x => x.DateApproved,
                y => y.MapFrom(s => s.DateApproved.HasValue ?
                                    DateTime.SpecifyKind(s.DateApproved.Value, DateTimeKind.Utc) :
                                    DateTime.UtcNow));

Upvotes: 14

Zein Makki
Zein Makki

Reputation: 30022

I think this would work:

Mapper.CreateMap<Agenda, AgendaViewModel>()
        .ForMember(x => x.DateApproved, 
                    y => y.ResolveUsing(z => z.DateApproved.HasValue 
                           ? DateTime.UtcNow :
                           Mapper.Map<Agenda, AgendaViewModel>
                          (DateTime.SpecifyKind(z.DateApproved.Value, DateTimeKind.Utc)));

Upvotes: 2

Related Questions