AutoMapper и преобразование даты и времени в строку

Я не могу решить эту проблему. У меня такое ощущение, что это ограничение LINQ и деревьев выражений, но не уверен, как принять тело лямбды. Могу ли я достичь этого БЕЗ создания пользовательского конвертера?

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

Я получаю эту ошибку: Лямбда-выражение с телом оператора не может быть преобразовано в дерево выражений

Ответы

Ответ 1

попробуйте следующее:

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

Ответ 2

Чтобы использовать лямбда-тела, используйте .ResolveUsing вместо .MapFrom.

В соответствии с автором:

MapFrom содержит некоторые дополнительные элементы, которым нужны деревья выражений (например, null проверка и т.д.).

Итак, ваше утверждение будет выглядеть так:

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