C# 如何从->;映射稍微复杂的场景;到成员场景
我有一个C# 如何从->;映射稍微复杂的场景;到成员场景,c#,.net,.net-core,automapper,C#,.net,.net Core,Automapper,我有一个CarDto和Car域对象。 这辆车有司机名单 public class Car { public int Id {get; set; } public int Name {get; set; } public ICollection<Driver> Drivers {get; set; } } public class CarVM { public int Id {get; set; } public int Name {get;
CarDto
和Car
域对象。
这辆车有司机名单
public class Car
{
public int Id {get; set; }
public int Name {get; set; }
public ICollection<Driver> Drivers {get; set; }
}
public class CarVM
{
public int Id {get; set; }
public int Name {get; set; }
public string DriverBadge {get; set; }
public string[] Drivers {get; set; }
}
公车
{
公共int Id{get;set;}
公共int名称{get;set;}
公共ICollection驱动程序{get;set;}
}
公共类CarVM
{
公共int Id{get;set;}
公共int名称{get;set;}
公共字符串DriverEdge{get;set;}
公共字符串[]驱动程序{get;set;}
}
我正在尝试使用AutoMapper映射这些对象
CreateMap<CarVM, Car>()
.ForMember(dest => dest.Name, opts => opts.MapFrom(src => src.Name))
.ForMember(dest => dest.Drivers, opts => {
... how to map here?
})
CreateMap()
.ForMember(dest=>dest.Name,opts=>opts.MapFrom(src=>src.Name))
.ForMember(dest=>dest.Drivers,opts=>{
…如何在这里绘制地图?
})
您只需将字符串[]
映射到列表
。只需使用下面的
CreateMap<CarVM, Car>()
.ForMember(dest => dest.Name, opts => opts.MapFrom(src => src.Name))
.ForMember(dest => dest.Drivers, opts => opts.MapFrom(s=> s.Drivers.ToList()))
});
CreateMap()
.ForMember(dest=>dest.Name,opts=>opts.MapFrom(src=>src.Name))
.FormMember(dest=>dest.Drivers,opts=>opts.MapFrom(s=>s.Drivers.ToList())
});
更多信息-您需要从
驱动程序
到字符串
的映射。问题不在于如何从数组中获取值并创建列表,而是在这种情况下,如何在自动映射的FormMember中执行此操作FormMember
都不需要。也许可以研究一下这个映射在这里会有什么帮助。我想把逻辑从控制器转移到这个AutoMapper类中。我如何将数组中的值映射到驱动程序列表的逻辑。感谢更新。如果我想在同一块中手动向列表中添加一个以上的驱动程序(我有一个场景,我想根据它的徽章添加一个以上的驱动程序)。@user1765862映射应仅用于src
到dest
映射。它与您的业务逻辑无关。这些ForMember
都不需要。注释它们,你会得到相同的结果。@user1765862上帝在这里,是的,如果src
和dest
具有相同的名称和类型,则不需要ForMember
,它们不必是相同的类型。它们必须是“可映射的”: