AutoMapper并将日期时间转换为字符串

我无法理解以下问题。 我有一种感觉它是LINQ和表达式树的限制,但不确定如何接受lambda体。 我可以在不创建自定义转换器的情况下实现此目的

Mapper.CreateMap() .ForMember(x => x.DateCreated, opt => opt.MapFrom(src => { var dt = (DateTime)src.DateCreated; return dt.ToShortDateString(); })); 

我收到此错误: 带有语句主体的lambda表达式无法转换为表达式树

试试这个:

 Mapper.CreateMap().ForMember(x => x.DateCreated, opt => opt.MapFrom(src => ((DateTime)src.DateCreated).ToShortDateString())); 

要使用lambda主体,请使用.ResolveUsing而不是.MapFrom

根据作者 :

MapFrom有一些额外的东西需要表达式树(如null检查等)。

所以你的陈述看起来像这样:

  Mapper.CreateMap() .ForMember(x => x.DateCreated, opt => opt.ResolveUsing(src => { var dt = (DateTime)src.DateCreated; return dt.ToShortDateString(); }));