[英]Read CSV with Linq
我在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和第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);
}
腳步:-
步驟1 - 從CSV文件中讀取所有行並用逗號(,)分割它們,這將產生一個帶有每個值的數組os字符串。
第2步 - 跳過第一個數組(持有標題),然后使用SelectMany將列表展平為一個,接下來你需要設置每個集合的索引(在展平列表中)類似,我正在使用Select opertaor ,剩下的最后一件事是過濾和選擇項目。
您可以嘗試下面的函數1代碼
var stuff = from l in File.ReadAllLines(filename)
let x = l.Skip(1).Split(new [] {',', ' '}, StringSplitOptions.RemoveEmptyEntries)
.Select(s => s)
.select new
{
second= s[1],
third= s[2]
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.