public class SourceData
{
public string SourceCode { get; set; }
public string SourceName { get; set; }
}
和
public class DestData
{
public string Code { get; set; }
public string DestName { get; set; }
}
我尝试将SourceData的IEnumerable映射到DestData,但它无法正常工作
我尝试
AutoMapper.Mapper.CreateMap<IEnumerable<SourceData >, IEnumerable<DestData>>()
答案 0 :(得分:4)
两个类都有不同名称的字段。 AutoMapper不会自动拾取它们。因此,您需要明确告诉它如何映射两个类中的字段。你这样做。
Mapper.CreateMap<SourceData, DestData>()
.ForMember(dest => dest.DestName, a => a.MapFrom(src => src.SourceName))
.ForMember(dest => dest.Code, a => a.MapFrom(src => src.SourceCode))
请注意,您在类型本身之间创建地图而不是在类型集合之间创建地图,因为AutoMapper将自动处理集合。接下来只需使用以下地图:
var destList= Mapper.Map<List<DestData>>(sourceList);
或
Mapper.Map<List<SourceData>, List<DestData>>(sourceList, destList);
取决于您的情况。
答案 1 :(得分:1)
Mapper.Map&gt;(someDataEnum)您是否已将SourceData映射到DestData?您不必映射集合。
var configuration = Mapper.Configuration;
configuration.CreateMap<SourceData, DestData>()
.ForMember(lite => lite.Code, src => src.MapFrom(post => post.SourceCode))
.ForMember(lite => lite.DestName, src => src.MapFrom(post => post.SourceName))
并映射
var destDataCollection= Mapper.Map<IEnumerable<SourceData>, IEnumerable<DestData>>(sourceDataCollection);