我需要使用 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 映射中使用丢弃变量?
您可以使用此重载:
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()));
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句