Alw*_*wyn 40 c# lambda automapper automapper-2
假设我有以下实体(类)
public class Target
{
public string Value;
}
public class Source
{
public string Value1;
public string Value2;
}
Run Code Online (Sandbox Code Playgroud)
现在我想配置自动映射,如果Value1以"A"开头,则将Value1映射到Value,否则我想将Value2映射到Value.
这是我到目前为止:
Mapper
.CreateMap<Source,Target>()
.ForMember(t => t.Value,
o =>
{
o.Condition(s =>
s.Value1.StartsWith("A"));
o.MapFrom(s => s.Value1);
<<***But then how do I supply the negative clause!?***>>
})
Run Code Online (Sandbox Code Playgroud)
然而,我仍然不知道的部分是如果在早期条件失败时告诉AutoMapper 采取s.Value2
措施.
在我看来,API的设计并不像它可能......但可能是我缺乏知识妨碍了.
Tej*_*jal 89
试试这个
Mapper.CreateMap<Source, Target>()
.ForMember(dest => dest.Value,
opt => opt.MapFrom
(src => src.Value1.StartsWith("A") ? src.Value1 : src.Value2));
Run Code Online (Sandbox Code Playgroud)
Condition选项用于向映射该属性之前必须满足的属性添加条件,并使用MapFrom选项执行自定义源/目标成员映射.
AutoMapper 允许向在映射该属性之前必须满足的属性添加条件。
Mapper.CreateMap<Source,Target>()
.ForMember(t => t.Value, opt =>
{
opt.PreCondition(s => s.Value1.StartsWith("A"));
opt.MapFrom(s => s.Value1);
})
Run Code Online (Sandbox Code Playgroud)