2

我有一张包含消息的票。此外,票证模型包含一个 resolutionMessage,它是可以为空的消息。

我想做这样的事情:

Mapper.CreateMap<Ticket, TicketModel>()
.ForMember(dest => dest.ResolutionMessage, opt => opt.MapFrom(src => 
            {

                if (src.ResolutionMessageID != null)
                {
                    src.Messages.Where(m => m.MessageID == src.ResolutionMessageID);
                }
                else
                    // Return null;
                }
                ));

第二次尝试 :

            .ForMember(dest => dest.ResolutionMessage, opt =>
                {
                     (opt.MapFrom(src => if(src.ResolutionMessageID != null) 
                      opt.MapFrom(src => src.Messages.Where(m => m.MessageID == src.ResolutionMessageID));
                else
                    opt => opt.Ignore();
                }

                );

有任何想法吗?

4

1 回答 1

2

我会考虑ResolutionMessageID是一个可为空的类型,你可以尝试这样的事情:

.ForMember(dest => dest.ResolutionMessage, opt => opt.MapFrom(src => src.ResolutionMessageID.HasValue ? src.Messages.Where(m => m.MessageID == src.ResolutionMessageID) : null));

如果它不是可空类型并允许为空:

.ForMember(dest => dest.ResolutionMessage, opt => opt.MapFrom(src => src.ResolutionMessageID != null ? src.Messages.Where(m => m.MessageID == src.ResolutionMessageID.Value) : null));

或者你使用opt.MapFrom()or opt.Ignore(),没有办法同时使用两者。我认为当您映射的条件不接受规则时,最好保留空值。如果使用,opt.Ignore()将忽略转换对象的属性。

于 2013-08-09T19:40:30.763 回答