2017-02-21 223 views
-3

我有一个CSV文件使用LINQ C#

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... 如何使用我做StockQuote对象的列表,从csv文件请从CSV文件中的新对象linq

余米想是这样的:`

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

?因为它是一个很棒的流行词?你知道这是一个可用的csv解析器吗? – BugFinder

+3

请将您的代码作为文本添加到问题中。 – wkl

+0

是什么问题? –

回答

0

你不应该使用LINQ,正则表达式或类似的CSV解析。对于CSV解析,请使用CSV解析器。 Linq和正则表达式将正好工作,直到您遇到逃脱的控制字符,多行字段或类似的东西。然后,他们将明白打破。并且可以不可修复。

1

可为什么使用LINQ做这样的事情..

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]) 
           });