C# 自动映射并将日期时间转换为字符串
我无法理解以下问题。我有一种感觉,这是LINQ和表达式树的限制,但不确定如何接受lambda主体。我能在不创建自定义转换器的情况下实现这一点吗C# 自动映射并将日期时间转换为字符串,c#,.net,linq,automapper,C#,.net,Linq,Automapper,我无法理解以下问题。我有一种感觉,这是LINQ和表达式树的限制,但不确定如何接受lambda主体。我能在不创建自定义转换器的情况下实现这一点吗 Mapper.CreateMap<I_NEWS, NewsModel>() .ForMember(x => x.DateCreated, opt => opt.MapFrom(src => { var dt = (DateT
Mapper.CreateMap<I_NEWS, NewsModel>()
.ForMember(x => x.DateCreated, opt => opt.MapFrom(src => {
var dt = (DateTime)src.DateCreated;
return dt.ToShortDateString();
}));
Mapper.CreateMap()
.ForMember(x=>x.DateCreated,opt=>opt.MapFrom(src=>{
var dt=(DateTime)src.DateCreated;
返回dt.ToShortDateString();
}));
我得到了这个错误:
带有语句体的lambda表达式无法转换为表达式树请尝试以下操作:
Mapper.CreateMap<I_NEWS, NewsModel>().ForMember(x => x.DateCreated,
opt => opt.MapFrom(src => ((DateTime)src.DateCreated).ToShortDateString()));
Mapper.CreateMap().ForMember(x=>x.DateCreated,
opt=>opt.MapFrom(src=>((DateTime)src.DateCreated.toSortDateString());
要使用lambda实体,请使用.resolve using
而不是.MapFrom
根据:
MapFrom有一些额外的东西需要表达式树(比如null)
检查等)
因此,您的声明如下所示:
Mapper.CreateMap<I_NEWS, NewsModel>()
.ForMember(x => x.DateCreated, opt => opt.ResolveUsing(src => {
var dt = (DateTime)src.DateCreated;
return dt.ToShortDateString();
}));
Mapper.CreateMap()
.FormMember(x=>x.DateCreated,opt=>opt.ResolveUsing(src=>{
var dt=(DateTime)src.DateCreated;
返回dt.ToShortDateString();
}));
如果目标为空,则:
Mapper.CreateMap()
福门博先生(
dest=>dest.StartDate,
opt=>opt.MapFrom(
src=>string.IsNullOrEmpty(src.StartDate)?new DateTime?():DateTime.ParseExact(src.StartDate,DATEFORMAT,CultureInfo.InvariantCulture)
)
)
取决于,在这种情况下,由于需要表达式,因此在手动引用src对象的属性之前,您无法提供intellisense无法识别所需的ResolveUsing重载的“体”lambdaNote