AutoMapper和转换日期时间为字符串(AutoMapper and convert a dat

2019-08-17 03:00发布

我不能让我的头一轮的以下问题。 我有一种感觉是LINQ和表达式树的限制,但不知道如何接受拉姆达体。 我能做到这一点,而无需创建一个自定义转换器?

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

我得到这个错误: 与语句体lambda表达式不能转换为表达式树

Answer 1:

试试这个:

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


Answer 2:

为了使用拉姆达机构,使用.ResolveUsing代替.MapFrom

由于按照笔者 :

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

所以,你的说法是这样的:

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


文章来源: AutoMapper and convert a datetime to string