【问题标题】:Read CSV file from and to specific line numbers (e.g. 2 to 50)从特定行号(例如 2 到 50)读取 CSV 文件
【发布时间】:2024-05-03 22:15:06
【问题描述】:

我有一个当前读取所有行的 .csv 文件:

 string csv = File.ReadAllText(@inputfile);

假设该文件中有 100 行。我只想从第二行到第 50 行阅读它。如何在 C# 中做到这一点?

【问题讨论】:

    标签: c# csv readfile


    【解决方案1】:

    您可以在 LINQ 中使用ReadLines 方法:

    File.ReadLines(inputFile).Skip(2).Take(48);
    

    【讨论】:

      【解决方案2】:

      试试这个:

      var lines = File.ReadLines("inputfile.csv").Skip(1).Take(49);
      

      根据所有 cmets 修改答案

      【讨论】:

      • @John 在编辑之前他的回答是:string line = File.ReadLines(@inputfile).Skip(2).Take(50); 这是完全有效的。为什么你认为 C# 不能那样工作?
      • @vasily.sib 因为上次我检查时IEnumerable<string> 不能分配给stringFile.ReadLines(filename) 返回 IEnumerable<string>,通过关联,.Skip(2).Take(50) 也是如此。另外,如果有人想知道,我不是拒绝 saravanakumar 答案的人。
      • 此外,这也是错误的,因为它在前两行之后需要 50 行,直到第 50 行
      • 对 50 的编辑和逻辑错误表示抱歉:|
      • @saravanakumarv 在所有这些更改之后,您最终得到的答案与提供的第一个正确答案相同。此时我会考虑删除这个
      【解决方案3】:

      你可以读完所有行,跳过第一行,取剩下的 49 行

      List<String> lines = File.ReadAllLines(@inputFile).Skip(1).Take(49).ToList()
      

      【讨论】:

      • ReadLines 在 Selman 的答案中更好,因为它不必将整个文件读入内存。
      • @John:这里解释得很好:*.com/questions/21969851/…
      最近更新 更多