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(); }));