我使用TextFieldParser
解析CSV文件,使用EntityFramework
导入数据库。
TextFieldParser
以string[]
的形式返回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行格式如下:
姓,中间名,姓,地址,******中国
答案 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文件中值的顺序。