Automapper:ForMember中的复杂if else语句

假设Date是可以为空的DateTime:

Mapper.CreateMap() .ForMember(dest => dest.Date, opt => opt.MapFrom(src => { DateTime? finalDate = null; if (src.HasDate == "N") { // so it should be null } else { endResult = DateTime.Parse(src.Date.ToString()); } return finalDate; })); 

我得到的错误是:“错误30带有语句主体的lambda表达式无法转换为表达式树。”

当然,我完全清楚我可以简化查询,例如:

 Mapper.CreateMap() .ForMember(dest => dest.Date, opt => opt.MapFrom(src => src.HasDate == "N" ? null : DateTime.Parse(src.Date.ToString()))); 

但是,如果我坚持保留第一个例子的结构,因为我有更复杂的if else语句,第二个例子无法满足或至少不具有可读性,该怎么办?

使用ResolveUsing方法:

 Mapper.CreateMap() .ForMember(dest => dest.Date, o => o.ResolveUsing(Converter)); private static object Converter(SomeViewModels value) { DateTime? finalDate = null; if (value.Date.HasDate == "N") { // so it should be null } else { finalDate = DateTime.Parse(value.Date.ToString()); } return finalDate; } 

以下是更多信息: AutoMapper:MapFrom与ResolveUsing