嗨,我仍然是C#的新手,我正在使用Csvhelper
我试过读一下列出的csv文件
SurgicalDeviceId CreatedAt
-1 1/01/2000 0:00
-2 1/01/2000 0:00
1 19/02/2019 12:39
2 19/02/2019 12:39
3 19/02/2019 12:39
我已经这样映射了;
public class Instrument
{
//csv map
public int SurgicalDeviceId { get; set; }
public DateTime CreatedAt { get; set; }
}
public sealed class InstrumentMap : ClassMap<Instrument>
{
public InstrumentMap()
{
Map(m => m.SurgicalDeviceId);
Map(m => m.CreatedAt);
}
}
我的阅读文本是这样的;
public static List<Instrument> SplitCsv(string csv)
{
var textReader = new StringReader(@"D:\CSVStuff\Jasper.csv");
var csvr = new CsvReader(textReader);
var instrumentList = csvr.GetRecords<Instrument>().ToList();
return instrumentList;
}
我已经在这个代码下面进行了测试,并且它已经过调试,因此没有出现错误,但运行代码不产生任何列表,我不太确定如何继续。
在获取记录之前,您需要注册ClassMap
。您还应该让读者使用语句,以便妥善处理他们的资源。
public static List<Instrument> SplitCsv(string csv)
{
using(var textReader = new StreamReader(@"D:\CSVStuff\Jasper.csv"))
using(var csvr = new CsvReader(textReader))
{
csvr.Configuration.RegisterClassMap<InstrumentMap>();
var instrumentList = csvr.GetRecords<Instrument>().ToList();
return instrumentList;
}
}
您的文化信息可能会正确处理日期。在我的计算机上它抛出了一个错误,因此您可能需要将TypeConverterOption
添加到您的ClassMap中。
public sealed class InstrumentMap : ClassMap<Instrument>
{
public InstrumentMap()
{
Map(m => m.SurgicalDeviceId);
Map(m => m.CreatedAt).TypeConverterOption.Format("d/MM/yyyy H:mm");
}
}