c# - 在 Automapper 映射中使用 Discard 变量
问题描述
我需要使用 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()));
推荐阅读
- java - 如何从 Java 集合中获得相同的输出顺序
- c - “如果遇到NUL,fgets不会停止”是什么意思
- reactjs - 使用单个子组件反应多步表单
- azure - 遵循教程:使用 Terraform 和 HCL 创建 Azure VM 集群时,为什么会出现“未设置必填字段”?
- javascript - 回调函数,如何从对象中增加数字然后添加到 sum 属性
- matlab - 如何在 MATLAB 中更改颜色条的形状?
- flutter - Flutter 视频播放器加载和缓冲示例
- javascript - 如何从 vue 插件向 vue 主应用程序发出事件
- angular - 角度动态添加字段
- javascript - AlpacaJS:动态表行中的可观察引用字段