我需要使用Automapper映射将逗号分隔的字符串变量安全地转换为int列表。
在Automapper的6.2.2版本中,我这样做的是:
cfg.CreateMap<FilterRequest, Filter>()
.ForMember(dest => dest.SomeIds, opt => opt.ResolveUsing(src => !string.IsNullOrEmpty(src.SomeIds) ? src.SomeIds.Split(',').Where(x => int.TryParse(x, out _)).Select(int.Parse).ToList() : null));
,但是将Automapper升级到版本8.1.1之后,ResolveUsing
方法与MapFrom
方法合并。
当我尝试使用MapFrom
替换我的映射时:
cfg.CreateMap<FilterRequest, Filter>()
.ForMember(dest => dest.SomeIds, opt => opt.MapFrom(src => !string.IsNullOrEmpty(src.SomeIds) ? src.SomeIds.Split(',').Where(x => int.TryParse(x, out _)).Select(int.Parse).ToList() : null))
我在TryParse
中的丢弃变量有错误:表达式树可能不包含丢弃
如何在Automapper映射中使用丢弃变量?
答案 0 :(得分:1)
您可以使用此重载:
void MapFrom<TResult>(Func<TSource, TDestination, TResult> mappingFunction);
cfg.CreateMap<FilterRequest, Filter>()
.ForMember(
dest => dest.SomeIds,
opt => opt.MapFrom((src, dest) => src.SomeIds
.Split(',')
.Where(x => int.TryParse(x, out _))
.Select(int.Parse)
.ToList()));