C# 使用CsvHelper将解析的csv存储为合适的数据类型

C# 使用CsvHelper将解析的csv存储为合适的数据类型,c#,csvhelper,C#,Csvhelper,如何将解析后的csv存储在合适的数据类型中,以执行计算、查看等。我找到了一个名为records.ToList的方法,该方法似乎很有前途,但语法不正确 class XLOperations { public static void ParseCSV() { using (var reader = new StreamReader("data.csv")) using (var csv = new CsvReader(reader,

如何将解析后的csv存储在合适的数据类型中,以执行计算、查看等。我找到了一个名为records.ToList的方法,该方法似乎很有前途,但语法不正确

    class XLOperations
{
    public static void ParseCSV() {
        using (var reader = new StreamReader("data.csv"))
        using (var csv = new CsvReader(reader, System.Globalization.CultureInfo.InvariantCulture))
        {
            var records = csv.GetRecords<dynamic>();
            //here I want to store the parsed csv as a List<> or other suitable datatype to work with
        }
    }
}
类操作
{
公共静态void ParseCSV(){
使用(var reader=newstreamreader(“data.csv”))
使用(var csv=new CsvReader(reader,System.Globalization.CultureInfo.InvariantCulture))
{
var records=csv.GetRecords();
//在这里,我想将解析后的csv存储为列表或其他合适的数据类型
}
}
}

}最好从CsvHelper页面开始

令人困惑的是
csv.GetRecords()
返回
IEnumerable
,当您迭代
IEnumerable
对象时,它将记录。这意味着你还没有得到一个项目列表,你得到的是一个枚举器,它跟踪你在哪里得到记录,并且只在你要求时返回它们

通常,您从磁盘获取csv文件,这可能是一项成本高昂的操作。假设您只想从一个有5000万条记录的文件中获取前5条记录。你可以打电话

var records=csv.GetRecords().Take(5.ToList();
这将遍历磁盘上的前5条记录,然后返回5条记录的
列表。如果翻动
ToList()
Take(5)
,获取数据的方法将非常不同

var records=csv.GetRecords().ToList().Take(5);
这将遍历磁盘上的所有5000万条记录,并将它们放入内存。然后它将获取这些记录中的前5条,并将它们作为
IEnumerable


在获取这5条记录和使用更多内存方面,差异可能只有几秒钟与几分钟。

你说的“我语法不正确”是什么意思?根据,
GetRecords
返回一个
IEnumerable
。所以,我猜
csv.GetRecords().ToList()
是您要找的吗?我只想用我的记录做一些事情-但我不知道它是什么数据类型或如何处理它。当我键入“records”并添加一个点建议(如ToList)时,会弹出一个数组,因此我想我需要创建一个新变量,并将其存储为列表或其他内容。我不知道这句话的语法。那么我建议你多学点,因为现在你似乎不明白自己在做什么。如果var records=csv.GetRecords().ToList();返回一个列表,我不能通过MessageBox.Show(记录[1])显示元素;例如?谢谢!这可能就是造成混乱的原因。我读过API,但它非常技术性,示例也很有限。这个库可能不适合初学者。您确实需要考虑IEnumerable在后台做什么,但对于许多应用程序,您只需使用
csv.GetRecords().ToList()
。您只需认识到,只要调用
ToList()
,它就会将整个文件读入内存。