C# 从CSV文件读取数据

C# 从CSV文件读取数据,c#,performance,csv,C#,Performance,Csv,我正在寻找从CSV文件读取数据的最快方法。我尝试了两种不同的方法 方法#1:将CSV文件中的所有行读取到一个数组中,然后迭代该数组: String[] csv = File.ReadAllLines(@"E:\be.csv"); for (int i = 0; i < csv.Length; i++) { tx.Text = csv[i]; tx.Refresh(); } 使用StreamReader似乎要快得多。有没有更快的方法从CSV文件导入数据?我必须推荐可以在N

我正在寻找从CSV文件读取数据的最快方法。我尝试了两种不同的方法

方法#1:将CSV文件中的所有行读取到一个数组中,然后迭代该数组:

String[] csv = File.ReadAllLines(@"E:\be.csv");

for (int i = 0; i < csv.Length; i++)
{
    tx.Text = csv[i];
    tx.Refresh();
}

使用
StreamReader
似乎要快得多。有没有更快的方法从CSV文件导入数据?

我必须推荐可以在NuGet中找到的CsvHelper。昨天我第一次使用它,现在它将成为我的解决方案

对于您的实际问题,即什么更快,我可能会说只是执行
File.ReadAllLines(…)
,但最好是实际尝试并设置一个测试,以执行这两个选项数百次,并查看哪一个花费的时间最长

另外,不要忘记处置您的
StreamReader
。继续,使用语句将其包装在
中,这样所有事情都可能被关闭/处置。

塞巴斯蒂安·罗兰的可能是解决方法

它实现了
IDataReader
,其作用主要类似于StreamReader


强烈推荐。

.NET有一个名为的内置CSV解析器。

不要试图自己解析它,只要使用CSV解析器,这样你就不需要自己解析字符串,也不需要处理所有奇怪的问题(例如,引号转义),只需专注于使用数据即可。是的,无论何时处理任何文件,你都应该流式传输数据,除非有令人信服的理由不这样做。使用CSV,通常不需要担心Fast。没错。你可能认为你所需要做的就是用逗号分开,但这会让你陷入一个受伤的世界。谷歌还有一些,什么是
tx
,为什么在循环中刷新它有意义?在我的实际程序中,我有一个动态变化的输入,所以我添加了一个计时器。勾选事件,每隔几秒钟就开始在文件中读取,tx是一个文本框,显示我读取的数据。
StreamReader sr = new StreamReader(new FileStream(@"E:\be.csv");

while (!sr.EndOfStream)
{
    string seg = sr.ReadLine();
    tx.Text = sr.ReadLine();
    tx.Refresh();
}