我需要从CSV文件中取1行,并需要行号才能更改。我可以做一个int,double,string等等,我可以很容易地从外部程序中更改值,但是我不知道如何使文件读取器脚本将其中的一个作为行号的输入。
string GetLine(string lineresults, int LineNumber)
{
using (var sr = new StreamReader(lineresults)) {
for (int i = 1; i < line; i++)
sr.ReadLine();
return sr.ReadLine();
}
}我得到了分号和分隔符的GetLine部分的错误。
发布于 2015-05-19 14:58:15
如果您想要随机访问,可以读取所有行并将它们存储在数组中,因此File.ReadAllLines (请记住变量LineNumber从0开始):
string[] allLines = File.ReadAllLines(pathToFile);
string line = allLines[LineNumber]; // error if less lines, check allLines.Length另一种更有效的方法是使用延迟加载行的File.ReadLines,然后使用Enumerable.ElementAt或ElementAtOrDefault访问行号:
var lines = File.ReadLines(pathToFile);
string line = lines.ElementAtOrDefault(LineNumber); // null if there are less lines值得注意的是,它读取文件,直到到达文件的行号或结束为止。
MSDN:
ReadLines和ReadAllLines方法的不同之处如下:使用ReadLines时,可以在返回整个集合之前开始枚举字符串集合;使用ReadAllLines时,必须等待返回整个字符串数组后才能访问该数组。因此,当您处理非常大的文件时,ReadLines可能会更高效。
发布于 2015-05-19 14:58:23
正如@Alex注释的那样,只需将所有行读入数组中,然后得到所要的行。
var lines = System.IO.File.ReadAllLines( filename);
var line = lines[ lineIndex ];发布于 2015-05-19 15:47:33
这个NuGet包对于使用CSV非常有用。您可以从其中获取单个行,并通过名称或索引获取单个列。请查看这里的信息:
[Josh Close - CsvHelper][1]https://stackoverflow.com/questions/30329060
复制相似问题