C# AutoMapper-将整数映射到int数组

C# AutoMapper-将整数映射到int数组,c#,automapper,C#,Automapper,我正在尝试将数据库中的整数映射到int数组,但遇到错误:AutoMapper.AutoMapperConfigurationException:“成员的自定义配置仅支持类型上的顶级单个成员。” 这就是我所拥有的: 型号: public class Year { public int[] Months { get; set; } = new int[3]; } 映射: CreateMap<DataRow, Year>() .ForMember(dest => d

我正在尝试将数据库中的整数映射到int数组,但遇到错误:
AutoMapper.AutoMapperConfigurationException:“成员的自定义配置仅支持类型上的顶级单个成员。”

这就是我所拥有的:

型号:

public class Year
{
    public int[] Months { get; set; } = new int[3];
}
映射:

CreateMap<DataRow, Year>()
    .ForMember(dest => dest.Months[0], opt => opt.MapFrom(src => src["Jan"]))
    .ForMember(dest => dest.Months[1], opt => opt.MapFrom(src => src["Feb"]))
    .ForMember(dest => dest.Months[2], opt => opt.MapFrom(src => src["Mar"]))
CreateMap()
.ForMember(dest=>dest.Months[0],opt=>opt.MapFrom(src=>src[“Jan”]))
.ForMember(目标=>dest.Months[1],选项=>opt.MapFrom(src=>src[“Feb”]))
.ForMember(dest=>dest.Months[2],opt=>opt.MapFrom(src=>src[“Mar”]))

有人知道如何让它工作吗?

你需要这样做

.ForMember(dest => dest.Months, opt => opt.MapFrom(src => MapFromRow(src)))
你有什么办法

int[] MapFromRow(DataRow src)
{
    int months = new int[12];

    months[0] = src["Jan"];
    ...
    return months;
}
AutoMapper似乎不支持对属性进行“点画”或对数组进行索引

如果您想完全内联,可以这样做

.ForMember(dest => dest.Months, opt => opt.MapFrom(src => new int[]
    {
        (int)src["Jan"], (int)src["Feb"], ...
    }))

你需要这样做

.ForMember(dest => dest.Months, opt => opt.MapFrom(src => MapFromRow(src)))
你有什么办法

int[] MapFromRow(DataRow src)
{
    int months = new int[12];

    months[0] = src["Jan"];
    ...
    return months;
}
AutoMapper似乎不支持对属性进行“点画”或对数组进行索引

如果您想完全内联,可以这样做

.ForMember(dest => dest.Months, opt => opt.MapFrom(src => new int[]
    {
        (int)src["Jan"], (int)src["Feb"], ...
    }))

谢谢,但对于内联解决方案,它抱怨src[“.”无法将对象转换为int。src是数据行,我错过了显式转换。当时没有在编译器面前。尝试更新的答案。是的,我想,我同意你的第一个解决方案,谢谢!谢谢,但对于内联解决方案,它抱怨src[“.”无法将对象转换为int。src是数据行,我错过了显式转换。当时没有在编译器面前。尝试更新的答案。是的,我想,我同意你的第一个解决方案,谢谢!