我在 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/