使用AutoMapper将字符串数组映射到对象

时间:2014-09-09 15:13:41

标签: c# csv automapper textfieldparser

我使用TextFieldParser解析CSV文件,使用EntityFramework导入数据库。

TextFieldParserstring[]的形式返回CSV文件的每一行。为了保存对象,我需要从每一行构建一个对象。有没有办法使用AutoMapper

执行此操作

我的对象结构是这样的:

public class Person
{
    public string FirstName { get; set; }
    public string MiddleName { get; set; }
    public string LastName { get; set; }
    public string Address { get; set; }
    public string PhoneNumber { get; set; }
}

我的CSV行格式如下:

  

姓,中间名,姓,地址,******中国

1 个答案:

答案 0 :(得分:12)

这可以通过以下方式在AutoMapper中相当容易地完成:

Mapper.CreateMap<string[], Person>()
    .ForMember(p => p.FirstName, opts => opts.MapFrom(s => s[0]))
    .ForMember(p => p.MiddleName, opts => opts.MapFrom(s => s[1]))
    .ForMember(p => p.LastName, opts => opts.MapFrom(s => s[2]))
    .ForMember(p => p.Address, opts => opts.MapFrom(s => s[3]))
    .ForMember(p => p.PhoneNumber, opts => opts.MapFrom(s => s[4]));

请注意,此映射取决于CSV文件中值的顺序。