我在 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
Run Code Online (Sandbox Code Playgroud)
我需要对数据执行几个不同的函数,每个函数只需要一行中的某些字段。即函数 1 将需要来自每一行的第 2 和第 3 组数据,函数 2 将需要第 4 组数据。我将如何使用 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);
}
Run Code Online (Sandbox Code Playgroud)
步骤:-
步骤 1 - 从 CSV 文件中读取所有行并用逗号(,)分割它们,这将产生一个包含每个值的数组 os 字符串。
第 2 步- 跳过第一个数组(保存标题),然后使用 SelectMany 将列表展平为一个,接下来您需要为每个集(在展平列表中)设置类似的索引,我正在使用 Select opertaor ,剩下的最后一件事是过滤和选择项目。