首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从csv文件中读取特定行,并允许该行发生变化

问从csv文件中读取特定行,并允许该行发生变化
EN

Stack Overflow用户
提问于 2015-05-19 14:52:30
回答 3查看 5.8K关注 0票数 1

我需要从CSV文件中取1行,并需要行号才能更改。我可以做一个int,double,string等等,我可以很容易地从外部程序中更改值,但是我不知道如何使文件读取器脚本将其中的一个作为行号的输入。

代码语言:javascript
复制
        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部分的错误。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-05-19 14:58:15

如果您想要随机访问,可以读取所有行并将它们存储在数组中,因此File.ReadAllLines (请记住变量LineNumber从0开始):

代码语言:javascript
复制
string[] allLines = File.ReadAllLines(pathToFile);
string line = allLines[LineNumber]; // error if less lines, check allLines.Length

另一种更有效的方法是使用延迟加载行的File.ReadLines,然后使用Enumerable.ElementAt或ElementAtOrDefault访问行号:

代码语言:javascript
复制
var lines = File.ReadLines(pathToFile);
string line = lines.ElementAtOrDefault(LineNumber); // null if there are less lines

值得注意的是,它读取文件,直到到达文件的行号或结束为止。

MSDN:

ReadLines和ReadAllLines方法的不同之处如下:使用ReadLines时,可以在返回整个集合之前开始枚举字符串集合;使用ReadAllLines时,必须等待返回整个字符串数组后才能访问该数组。因此,当您处理非常大的文件时,ReadLines可能会更高效。

票数 2
EN

Stack Overflow用户

发布于 2015-05-19 14:58:23

正如@Alex注释的那样,只需将所有行读入数组中,然后得到所要的行。

代码语言:javascript
复制
var lines = System.IO.File.ReadAllLines( filename);
var line = lines[ lineIndex ];
票数 0
EN

Stack Overflow用户

发布于 2015-05-19 15:47:33

这个NuGet包对于使用CSV非常有用。您可以从其中获取单个行,并通过名称或索引获取单个列。请查看这里的信息:

代码语言:javascript
复制
[Josh Close - CsvHelper][1]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30329060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档