可以使用AutoMapper将一个对象映射到对象列表吗?

这些是我的课程:

public class EventLog { public string SystemId { get; set; } public string UserId { get; set; } public List Events { get; set; } } public class Event { public string EventId { get; set; } public string Message { get; set; } } public class EventDTO { public string SystemId { get; set; } public string UserId { get; set; } public string EventId { get; set; } public string Message { get; set; } } 

基本上我需要从具有嵌套列表的单个对象到具有嵌套列表和父对象的值的对象列表。 可以在AutoMapper中完成吗? 我意识到我可以轻松映射事件列表并获取EventDTO对象列表,然后手动设置SystemId和UserId,让AutoMapper为我处理它会非常方便。

您将需要这三个映射与一个自定义转换器:

 Mapper.CreateMap(); // maps message and event id Mapper.CreateMap(); // maps system id and user id Mapper.CreateMap>() .ConvertUsing(); // creates collection of dto 

因此,您配置了从EventEventDTO以及从EventLogEventDTO映射,您可以在自定义转换器中使用它们:

 class EventLogConverter : ITypeConverter> { public IEnumerable Convert(ResolutionContext context) { EventLog log = (EventLog)context.SourceValue; foreach (var dto in log.Events.Select(e => Mapper.Map(e))) { Mapper.Map(log, dto); // map system id and user id yield return dto; } } } 

NBuilder的示例代码:

 var log = new EventLog { SystemId = "Skynet", UserId = "Lazy", Events = Builder.CreateListOfSize(5).Build().ToList() }; var events = Mapper.Map>(log);