我有一个csv文件
Date,Open,High,Low,Close,Volume,Adj Close
2011-09-23,24.90,25.15,24.69,25.06,64768100,25.06
2011-09-22,25.30,25.65,24.60,25.06,96278300,25.06
...
我有一个带有字段的班级StockQuote
Date,open,high...
如何使用 linq 从csv文件中创建StockQuote
对象列表?
我正在尝试这样的事情:`
stirng[] Data = parser.ReadFields();
var query = from d in Data
where !String.IsNullorWhiteSpace(d)
let data=d.Split(',')
select new StockQuote()
{
Date=data[0], Open=double.Parse(data [ 1 ] ),
...
`
答案 0 :(得分:2)
你可以这样做......
var yourData = File.ReadAllLines("yourFile.csv")
.Skip(1)
.Select(x => x.Split(','))
.Select(x => new
{
Date= x[0],
Open = double.Parse(x[1]),
High = double.Parse(x[2]),
Low = double.Parse(x[3]),
Close = double.Parse(x[4]),
Volume = double.Parse(x[5]),
AdjClose = double.Parse(x[6])
});
答案 1 :(得分:0)
您不应该使用Linq,Regex等进行CSV解析。对于CSV解析,请使用CSV解析器。 Linq和Regex将完全正常工作直到您遇到转义控制字符,多行字段或类似的东西。然后他们会突然破裂。并且可能是不可修复的。
答案 2 :(得分:0)
看看这个问题: Parsing CSV files in C#, with header
答案提到.Net集成的CSV解析器似乎很好。 不,你不需要Linq。