我有一个40列的csv文件,我想使用csvhelper将其加载到数据表中。
安装库之后,我这样做:

using (TextReader reader = File.OpenText(fileName)) {
   var csv = new CsvReader(reader);
   while (csv.Read()) {
       var farmID = csv.GetField(0);
       Console.WriteLine(farmID);
   }
}

如您所见,我有一个控制台语句,它运行完美。

但是,csvReader具有一个构造函数,该构造函数采用一个自定义类将数据直接加载到该类。

我尝试了这个:
var record = csv.GetRecord<CSVFileDefinition>();

但我有这个异常(exception)
No properties are mapped for type 'MyProjectName.CSVFileDefinition'.

因为CSVFileDefinition是一个空类。

我的问题是该如何补习。

这是库:

http://joshclose.github.io/CsvHelper/

非常感谢

更新2

适用于我的解决方案是:
sealed class CSVFileDefinitionMap : CsvClassMap<CSVFileDefinition>
{
   public CSVFileDefinitionMap()
   {
      Map(m => m.FRM_ID).Name("FARM ID");
      Map(m => m.FRM_OWNER).Name("FARM OWNER ");
   }
}

class CSVFileDefinition
{
    public string FRM_ID { get; set; }
    public string FRM_OWNER { get; set; }
}

using (TextReader reader = File.OpenText(fileName)) {
    var csv = new CsvReader(reader);
    csv.Configuration.RegisterClassMap<CSVFileDefinitionMap>();
    while (csv.Read()) {
       var record = csv.GetRecord<CSVFileDefinition>();
    }
}

最佳答案

似乎您所需要做的就是为您希望在CSV文件中找到的每个列名添加一个属性到CSVFileDefinition类,自动映射应该处理其余的事情。

例如,如果属性名称与CSV中的列名称匹配,则这应该拉入场ID列:

public class CSVFileDefinition
{
    public int FarmId { get; set; }

    //... add other columns here...
}

10-06 11:52