C# automapper中的映射列表

C# automapper中的映射列表,c#,automapper,C#,Automapper,我是汽车制造商的新手。我有一个类,它有一个对象集合。我需要这个类映射到另一个具有不同名称的对象。我需要将员工映射到employeeDto。两个类都有不同的名称和不同的属性名称。如果它们有不同的名称,是否可以使用automapper进行映射 public class Employee { public string Name { get; set; } public string Address { get; set; } public List<Job> Jo

我是汽车制造商的新手。我有一个类,它有一个对象集合。我需要这个类映射到另一个具有不同名称的对象。我需要将员工映射到employeeDto。两个类都有不同的名称和不同的属性名称。如果它们有不同的名称,是否可以使用automapper进行映射

public class Employee
{
    public string Name { get; set; }
    public string Address { get; set; }
    public List<Job> Jobs { get; set; }
}
public class Job
{
    public string CompanyName { get; set; }
    public DateTime StartDate { get; set; }
    public DateTime EndDate { get; set; }
}

public class EmployeeDto
{
    public string Fullname { get; set; }
    public string Location { get; set; }
    public List<WorkExperience> WorkExperience { get; set; }
}
public class WorkExperience
{
    public string NameOfCompany { get; set; }
    public DateTime DateBegin { get; set; }
    public DateTime DateEnd { get; set; }
}
公共类员工
{
公共字符串名称{get;set;}
公共字符串地址{get;set;}
公共列表作业{get;set;}
}
公开课工作
{
公共字符串CompanyName{get;set;}
公共日期时间起始日期{get;set;}
公共日期时间结束日期{get;set;}
}
公共类雇员
{
公共字符串全名{get;set;}
公共字符串位置{get;set;}
公共列表工作经验{get;set;}
}
公开课工作经验
{
公司的公共字符串名称{get;set;}
公共日期时间日期开始{get;set;}
公共日期时间日期结束{get;set;}
}

您可以配置映射以手动处理
作业
列表到
工作经验
列表。请参阅AutoMapper文档中的

AutoMapper.Mapper.Initialize(cfg =>
{
    cfg.CreateMap<Employee, EmployeeDto>()
    .ForMember(dest => dest.Fullname, opt => opt.MapFrom(src => src.Name))
    .ForMember(dest => dest.Location, opt => opt.MapFrom(src => src.Address))
    .ForMember(dest => dest.WorkExperience, opt => opt.MapFrom(src => src.Jobs));

    cfg.CreateMap<Job, WorkExperience>()
    .ForMember(dest => dest.NameOfCompany, opt => opt.MapFrom(src => src.CompanyName))
    .ForMember(dest => dest.DateBegin, opt => opt.MapFrom(src => src.StartDate))
    .ForMember(dest => dest.DateEnd, opt => opt.MapFrom(src => src.EndDate));
});
AutoMapper.Mapper.Initialize(cfg=>
{
cfg.CreateMap()
.ForMember(dest=>dest.Fullname,opt=>opt.MapFrom(src=>src.Name))
.ForMember(dest=>dest.Location,opt=>opt.MapFrom(src=>src.Address))
.ForMember(dest=>dest.WorkExperience,opt=>opt.MapFrom(src=>src.Jobs));
cfg.CreateMap()
.ForMember(dest=>dest.NameOfCompany,opt=>opt.MapFrom(src=>src.CompanyName))
.ForMember(dest=>dest.DateBegin,opt=>opt.MapFrom(src=>src.StartDate))
.ForMember(dest=>dest.DateEnd,opt=>opt.MapFrom(src=>src.EndDate));
});

此外,如果您希望以相反的方向转换,可以添加以避免代码重复。

您可以配置映射以手动处理
作业
列表到
工作体验
列表。请参阅AutoMapper文档中的

AutoMapper.Mapper.Initialize(cfg =>
{
    cfg.CreateMap<Employee, EmployeeDto>()
    .ForMember(dest => dest.Fullname, opt => opt.MapFrom(src => src.Name))
    .ForMember(dest => dest.Location, opt => opt.MapFrom(src => src.Address))
    .ForMember(dest => dest.WorkExperience, opt => opt.MapFrom(src => src.Jobs));

    cfg.CreateMap<Job, WorkExperience>()
    .ForMember(dest => dest.NameOfCompany, opt => opt.MapFrom(src => src.CompanyName))
    .ForMember(dest => dest.DateBegin, opt => opt.MapFrom(src => src.StartDate))
    .ForMember(dest => dest.DateEnd, opt => opt.MapFrom(src => src.EndDate));
});
AutoMapper.Mapper.Initialize(cfg=>
{
cfg.CreateMap()
.ForMember(dest=>dest.Fullname,opt=>opt.MapFrom(src=>src.Name))
.ForMember(dest=>dest.Location,opt=>opt.MapFrom(src=>src.Address))
.ForMember(dest=>dest.WorkExperience,opt=>opt.MapFrom(src=>src.Jobs));
cfg.CreateMap()
.ForMember(dest=>dest.NameOfCompany,opt=>opt.MapFrom(src=>src.CompanyName))
.ForMember(dest=>dest.DateBegin,opt=>opt.MapFrom(src=>src.StartDate))
.ForMember(dest=>dest.DateEnd,opt=>opt.MapFrom(src=>src.EndDate));
});

此外,如果您希望以相反的方向转换,可以添加以避免代码重复。

具有列表的属性如何?@RamppyDumppy:创建两个映射。首先将属性列表a映射到属性列表b,然后创建一个新映射,将列表a的类型映射到列表b的类型。具有列表的属性如何?@RamppyDumppy:创建两个映射。首先将属性列表a映射到属性列表b,然后创建一个新映射,将列表a的类型映射到列表b的类型。