Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从->;映射稍微复杂的场景;到成员场景_C#_.net_.net Core_Automapper - Fatal编程技术网

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
,它们不必是相同的类型。它们必须是“可映射的”: