自动映射 - 对于 IEnumerable 映射具有不同名称的多个属性
Automapping - for IEnumerable map multiple properties with different name
我有两个class
说:
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>>()
Mapper.Map>(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);
两个 类 都有不同名称的字段。 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);
视情况而定。
我有两个class 说:
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>>()
Mapper.Map>(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);
两个 类 都有不同名称的字段。 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);
视情况而定。