Automapper 中条件的自定义值
Custom value for Condition in Automapper
我有这样的场景
如果总天数少于 30 天,那么我必须将 Salary 设置为 null
this.CreateMap<Foo, Doo>()
.ForMember(dst => dst.Salary, opt => {
opt.Condition(src => src.JoinedDate.Days <= 30));
opt.MapFrom(null)
}
但我遇到错误“找不到 Foo 类型的成员。参数名称:名称”。但没有任何 属性“名称”。
问题是如何在条件检查中将空值传递给目标 属性,并在天数大于 30 时保留现有值。
opt.MapFrom(null)
您可以使用内联自动映射器 ResolveUsing
。
ForMember(dst => dst.Salary,
o => o.ResolveUsing(src => src.JoinedDate.Days > 30 ? src.Salary: null));
尝试使用:
this.CreateMap<Foo, Doo>()
.ForMember(dst => dst.Salary,
opt => opt.MapFrom(src => src.JoinedDate.Days <= 30 ? null : src.Salary))
UPD
要从目标中保留 Salary
,请使用接受源和目标的 MapFrom
重载:
this.CreateMap<Foo, Doo>()
.ForMember(dst => dst.Salary,
opt => opt.MapFrom((src, dst) => src.JoinedDate.Days <= 30 ? null : dst.Salary))
我只是结合了以上两种解决方案,找到了我的问题的答案。
ForMember(dst => dst.Salary,
opt => opt.ResolveUsing((src, dst) => src.JoinedDate.Days <= 30 ? null: dst.Salary));
我有这样的场景
如果总天数少于 30 天,那么我必须将 Salary 设置为 null
this.CreateMap<Foo, Doo>()
.ForMember(dst => dst.Salary, opt => {
opt.Condition(src => src.JoinedDate.Days <= 30));
opt.MapFrom(null)
}
但我遇到错误“找不到 Foo 类型的成员。参数名称:名称”。但没有任何 属性“名称”。
问题是如何在条件检查中将空值传递给目标 属性,并在天数大于 30 时保留现有值。
opt.MapFrom(null)
您可以使用内联自动映射器 ResolveUsing
。
ForMember(dst => dst.Salary,
o => o.ResolveUsing(src => src.JoinedDate.Days > 30 ? src.Salary: null));
尝试使用:
this.CreateMap<Foo, Doo>()
.ForMember(dst => dst.Salary,
opt => opt.MapFrom(src => src.JoinedDate.Days <= 30 ? null : src.Salary))
UPD
要从目标中保留 Salary
,请使用接受源和目标的 MapFrom
重载:
this.CreateMap<Foo, Doo>()
.ForMember(dst => dst.Salary,
opt => opt.MapFrom((src, dst) => src.JoinedDate.Days <= 30 ? null : dst.Salary))
我只是结合了以上两种解决方案,找到了我的问题的答案。
ForMember(dst => dst.Salary,
opt => opt.ResolveUsing((src, dst) => src.JoinedDate.Days <= 30 ? null: dst.Salary));