Agn*_*lec 21 .net c# csv csvhelper
我有一个包含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);
}
}
Run Code Online (Sandbox Code Playgroud)
如你所见,我有一个控制台声明,它完美无缺.
但是,csvReader有一个构造函数,它使用自定义类将数据直接加载到它.
我试过这个:
var record = csv.GetRecord<CSVFileDefinition>();
Run Code Online (Sandbox Code Playgroud)
但我得到了这个例外
No properties are mapped for type 'MyProjectName.CSVFileDefinition'.
Run Code Online (Sandbox Code Playgroud)
因为CSVFileDefinition是一个空类.
我的问题是如何填补这个课程.
这是图书馆:
http://joshclose.github.io/CsvHelper/
非常感谢
适合我的解决方案是:
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>();
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
您似乎需要做的就是为CSVF文件中的每个列名添加一个属性到CSVFileDefinition类,并且自动映射应该处理其余的事情.
例如,如果属性名称与CSV中的列名称匹配,则应该引入服务器场ID列:
public class CSVFileDefinition
{
public int FarmId { get; set; }
//... add other columns here...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27120 次 |
| 最近记录: |