C# CsvHelper不会从CsvHelper创建的.csv文件中读取数据

C# CsvHelper不会从CsvHelper创建的.csv文件中读取数据,c#,csv,csvhelper,C#,Csv,Csvhelper,您好,我正在尝试使用CsvHelper,并最终让它将我的数据写入.csv文件,但如果尝试读取数据,结果总是空的。它读取标题,然后csv.Read()似乎会跳过所有数据 Sperrnummer类定义: public class Sperrnummer { public string Nummer { get; set; } public DateTime Erstellt { get; set; } public string Benutzer { get; set; }

您好,我正在尝试使用CsvHelper,并最终让它将我的数据写入.csv文件,但如果尝试读取数据,结果总是空的。它读取标题,然后csv.Read()似乎会跳过所有数据

Sperrnummer类定义:

public class Sperrnummer
{
    public string Nummer { get; set; }
    public DateTime Erstellt { get; set; }
    public string Benutzer { get; set; }

    public Sperrnummer(string nummer, DateTime erstellt, string benutzer)
    {
        Nummer = nummer;
        Erstellt = erstellt;
        Benutzer = benutzer;
    }

    public Sperrnummer(string nummer)
    {
        Nummer = nummer;
        Erstellt = DateTime.Now;
        Benutzer = HttpContext.Current.User.Identity.Name;
    }
    public Sperrnummer()
    {
        Nummer = "";
        Erstellt = DateTime.Now;
        Benutzer = HttpContext.Current.User.Identity.Name;
    }
}
这是我的示例文件:

Nummer,Erstellt,Benutzer
03063651976,08.07.2018 13:54:49,MASCHINE\Plopp
03063651977,08.07.2018 13:54:49,MASCHINE\Plopp
03063651978,08.07.2018 13:54:49,MASCHINE\Plopp
03063651979,08.07.2018 13:54:49,MASCHINE\Plopp
03063651971,08.07.2018 13:54:49,MASCHINE\Plopp
03063651972,08.07.2018 13:54:49,MASCHINE\Plopp
03063651973,08.07.2018 13:54:49,MASCHINE\Plopp
这是我的“读者”:

public ActionResult Index()
{
var filePath=Server.MapPath(“~/liste.txt”);
List sperrnummern=新列表();
if(System.IO.File.Exists(filePath)){
使用(var reader=newstringreader(filePath))
{
var csv=新的CsvReader(读卡器);
csv.Read();
csv.ReadHeader();
而(csv.Read())
{
var nummer=csv.GetRecord();
sperrnummer.Add(nummer);
}
}
}
其他的
{
sperrnummern=新列表();
}
返回视图(sperrnummern);
}

结果“sperrnummern”始终为空。

由于缺少默认构造函数和目标类的只读属性,您必须手动初始化该类,提取值并将其传递给构造函数参数

while (csv.Read()) {
    var nummer = new Sperrnummer(
        nummer: csv["Nummer"],
        erstellt: csv.GetField<DateTime>("Erstellt"),
        benutzer: csv["Benutzer"]
    );
    sperrnummern.Add(nummer);
}
while(csv.Read()){
var nummer=新的Sperrnummer(
nummer:csv[“nummer”],
erstellt:csv.GetField(“erstellt”),
贝努策:csv[“贝努策”]
);
sperrnummer.Add(nummer);
}

是否尝试调试此代码?if语句有效吗?我认为没有必要进行首读。你丢失了标题。是的,调试表明,if语句工作得很好。文档中建议在头之前使用.read()。是否有任何异常处理要执行?例如,如果CSV行无法解析为未显示的
sperrnumer
类,该怎么办?CSVHelper可以立即将所有记录读取到您的集合中。大多数代码都不需要。根据您的评论,我添加了一个默认构造函数,似乎解决了这个问题!所以我把你的答案标记为解决方案。谢谢大家!
while (csv.Read()) {
    var nummer = new Sperrnummer(
        nummer: csv["Nummer"],
        erstellt: csv.GetField<DateTime>("Erstellt"),
        benutzer: csv["Benutzer"]
    );
    sperrnummern.Add(nummer);
}