c# - 使用 Linq 读取 CSV

标签 c# linq csv

我在 CSV 文件中有以下几行(更多,但这个示例很好)。

Date,Open,High,Low,Close,Volume,Adj Close
2012-11-01,77.60,78.12,77.37,78.05,186200,78.05
2012-10-31,76.96,77.75,76.96,77.47,290700,77.47
2012-10-26,77.30,77.62,76.86,77.36,195100,77.36

我需要对数据执行几个不同的函数,每个函数只需要一行中的某些字段。即功能 1 将需要每行的第二和第三组数据,功能 2 将需要第四组数据。我该如何使用 LINQ 来做到这一点(跳过第一行)?

最佳答案

你可以试试这个:-

            var lines = File.ReadAllLines(@"Linq.csv").Select(x => x.Split(','));
            //Considering each line contains same no. of elements
            int lineLength = lines.First().Count();  
            var CSV = lines.Skip(1)
                       .SelectMany(x => x)
                       .Select((v, i) => new { Value = v, Index = i % lineLength })
                       .Where(x => x.Index == 2 || x.Index == 3)
                       .Select(x => x.Value);
            foreach (var data in CSV)
            {
                Console.WriteLine(data);
            }

步骤:-

第 1 步 - 从 CSV 文件中读取所有行并用逗号 (,) 分隔它们,这将生成包含每个值的操作系统字符串数组。

第 2 步 - 跳过第一个数组(包含标题),然后使用 SelectMany 将列表展平为一个,接下来您需要为每个集合设置索引(在展平列表中)类似,我正在使用 Select opertaor 执行此操作,剩下的最后一件事是过滤和选择项目。

关于c# - 使用 Linq 读取 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26789040/

相关文章:

c# - 无法转换类型为 'System.Data.Objects.MaterializedDataRecord' 的对象

python - 解压并读取 Dukascopy .bi5 tick 文件

c# - 如何使我的应用程序与 Windows 资源管理器一样快地呈现文件

c# - Postsharp:如何设置异常后的返回值

c# - 寻找特定的可枚举运算符序列 : TakeWhile(! ) + Concat Single

c# - 一个列数据表到 List<string>

Linq to Objects - 在列表中搜索的位置

Javascript/D3.JS - 将 CSV 列项目转换为 JS 列表

python - Pandas :计算每组行内的正弦距离

c# - 为什么 LINQ 查询会在我尝试获取某种类型的计数时抛出异常