我如何在使用AutoMapper的lambda表达式内做空检查?



我有一个像这样的映射配置文件:

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做到了。

相关内容

  • 没有找到相关文章

最新更新