我有一个像这样的映射配置文件:
public class MappingProfile : Profile {
public MappingProfile()
{
// DTO Mapping
CreateMap<Animal, AnimalDto>()
.ForMember(dest => dest.ReceivalDate, opt => opt.MapFrom(src => src.Receival.ReceivalDate));
}
}
现在的问题是,我有一个Receival
作为Animal
类的一部分,有时可以是null
。但是,如果我尝试以下任何操作,我将得到错误:
src.Receival != null ? src.Receival.ReceivalDate : null
无法将lambda表达式转换为类型'IValueResolver<Animal,>',因为它不是委托类型
src?.Receival.ReceivalDate
表达式树lambda不能包含空传播操作符
现在我的问题是我如何在使用MappingProfiles的lambda表达式内做空检查?
@zaitsman的评论帮助了我,然而,我最终采用的解决方案是:
.ForMember(dest => dest.ReceivalDate, opt => opt.MapFrom(src => (src.Receival != null) ? src.Receival.ReceivalDate : (DateTime?) null))
这个工作的原因是null
不能用于Lambda表达式;然而,(DateTime?) null
做到了。