2017-02-21 26 views
-3

У меня есть CSV файлсделать новый объект из 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-файла с помощью 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

Почему с помощью LINQ? Потому что это отличное слово? вы знаете, что парсер csv доступен? – BugFinder

+3

Пожалуйста, добавьте свой код в вопрос как текст. – wkl

+0

В чем вопрос? –

ответ

0

Вы не должны использовать Linq, Regex или т.п. для CSV разбора. Для анализа CSV используйте CSV Parser. Linq и Regex будут работать точно до, вы сталкиваетесь с экранированным символом управления, многострочными полями или чем-то вроде этого. Тогда они прорвутся. И, возможно, будет невозможно.

1

Вы можете сделать что-то вроде этого ..

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