.net c#自动将嵌套对象映射到平面对象列表

.net c#自动将嵌套对象映射到平面对象列表,.net,automapper,.net,Automapper,我有以下示例结构: public class Client { public Guid Id { get; set; } public string Name { get; set; } public ICollection<Adress> AdressList { get; set; } } public class Adress { public Guid Id { get; set; } public string street {

我有以下示例结构:

public class Client
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    public ICollection<Adress> AdressList { get; set; }
}

public class Adress
{
     public Guid Id { get; set; }
     public string street { get; set; }
}
公共类客户端
{
公共Guid Id{get;set;}
公共字符串名称{get;set;}
公共ICollection不支持javascript。
我想得到一个类似于这个对象的结果

public class ViewModelRoot
{
     public ICollection<ViewModelClient> ViewModelClientList { get; set; }
     public ICollection<ViewModelAdress> ViewModelAdressList { get; set; }
}
public class ViewModelClient
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    public ICollection<string> AdressIdList { get; set; }
}

public class ViewModelAdress
{
     public Guid Id { get; set; }
     public string street { get; set; }
}
公共类ViewModelRoot
{
公共ICollection ViewModelClientList{get;set;}
公共ICollection ViewModelAddressList{get;set;}
}
公共类ViewModelClient
{
公共Guid Id{get;set;}
公共字符串名称{get;set;}
公共ICollection地址列表{get;set;}
}
公共类ViewModelAddress
{
公共Guid Id{get;set;}
公共字符串street{get;set;}
}
映射应该将AddressList从我的客户机类提取到同一级别上的一个单独列表,并且应该用它的GUID替换引用

我认为这可能与汽车制造商…任何想法? 提前非常感谢。

Mapper.Initialize(cfg=>
Mapper.Initialize(cfg=>
{
    cfg.CreateMissingTypeMaps = false;
    cfg.CreateMap<Client, ViewModelRoot>()
        .ForMember(d=>d.ViewModelClientList, o=>o.MapFrom(s=>new[]{s}))
        .ForMember(d=>d.ViewModelAdressList, o=>o.MapFrom(s=>s.AdressList));
    cfg.CreateMap<Client, ViewModelClient>()
        .ForMember(d=>d.AdressIdList, o=>o.MapFrom(s=>s.AdressList.Select(a=>a.Id)));
    cfg.CreateMap<Adress, ViewModelAdress>();
});
{ cfg.CreateMissingTypeMaps=false; cfg.CreateMap() .ForMember(d=>d.ViewModelClientList,o=>o.MapFrom(s=>new[]{s})) .FormMember(d=>d.ViewModelAddressList,o=>o.MapFrom(s=>s.AddressList)); cfg.CreateMap() .ForMember(d=>d.AdressIdList,o=>o.MapFrom(s=>s.AdressList.Select(a=>a.Id)); CreateMap(); });
但是为什么ViewModelClientList是一个列表?它不应该只是一个引用吗?它是一个redux模式。为了在我的角度前端中不处理冗余数据,所有实体都应该以平面格式进行管理。必须提取嵌套对象。转换多个客户端时,两者都将适合同一结构。