c# - 有条件的映射
问题描述
我想根据条件映射 2 个对象,如果为 true mapp else 忽略,则条件不是源的一部分,也不是目标的一部分
var mapperconfig = new MapperConfiguration(cfg =>
{
cfg.CreateMap<Source, Destination>()
.ForMember(source => source.Titulaires,
opt => opt.Condition(titulaires.HasValue && titulaires == true));
....
});
扩展方法 Condition() 只接受与源或目标相关的类型。
解决方案
AutoMapper 允许您将条件添加到在映射该属性之前必须满足的属性。
例如。
public class Foo
{
public int baz;
}
public class Bar
{
public uint baz;
}
public class Program
{
public static void Main()
{
Mapper.CreateMap<Foo,Bar>().ForMember(dest => dest.baz, opt => opt.Condition(src => (src.baz >= 0)));
var foo1 = new Foo { baz=-1 };
var bar1 = Mapper.Map<Bar>(foo1);
Console.WriteLine("bar1.baz={0}", bar1.baz);
var foo2 = new Foo{ baz=100 };
var bar2 = Mapper.Map<Bar>(foo2);
Console.WriteLine("bar2.baz={0}", bar2.baz);
}
}
此外,它们还提供前提条件功能
请参阅此链接条件映射
推荐阅读
- html - 是否可以保留输入占位符中的部分内容?
- react-native - 发布请求后更新按钮而不更新整个屏幕
- sql - 在 SQL 中使用 case 表达式按年龄分组
- java - java.lang.ClassCastException 在 Spring 应用程序启动时发生
- amazon-web-services - 从 dynamoDb 中提取数据并将其移动到另一个表的最佳方法
- java - 制作没有标签的折线图
- azure - 手动编辑 Azure 数据工厂 V1 中的管道查询
- angular - 我要返还金额
- javascript - stoppropagation 如何与循环一起工作?
- python - 自动查找曲线拟合(或图形反卷积)中的最佳峰数