2013-12-15 7 views
5

Załóżmy, że mam plik CSV z nagłówkiem zawierającym kolumny Population and Profit i chciałbym pracować z nim w języku F # interactive. Mam następujący kod:Dostawca typu CSV nie może znaleźć kolumny w języku F # interaktywny

#r "../packages/FSharp.Data.1.1.10/lib/net40/FSharp.Data.dll" 

open FSharp.Data 

// load csv header 
let cities = new CsvProvider<"cities.csv">() 

// how to reach data 
let firstRow = cities.Data |> Seq.head 
let firstPopulation = firstRow.Population 
let firstProfit = firstRow.Profit 

pojawia się błąd z F # interaktywne:

błąd FS0039: Pole, konstruktor lub członek 'Populacja' nie jest zdefiniowane

Wydaje się to mylące dla mnie, ponieważ intellisense w VS nie ma problemu z pobieraniem tej kolumny z moich danych za pośrednictwem dostawcy typu CSV.

Próbowałem również stworzyć program z tym samym dostawcą typów i wszystko działa dobrze. W ten sposób:

open FSharp.Data 

[<EntryPoint>] 
let main argv = 
    use file = System.IO.File.CreateText("result.txt") 
    let csv = new CsvProvider<"cities.csv">() 
    for record in csv.Data do 
     fprintfn file "%A" record.Population 
    0 

Czy czegoś brakuje? Dzięki za jakąkolwiek odpowiedź.

+2

można spróbować użyć pełnej ścieżki do pliku CSV? (Czasami F # Interactive wpada w pomieszanie ścieżek ...) –

+0

To dziwne. Czy na pewno wysłałeś wszystkie linie do fsi? Po prostu próbowałem czegoś podobnego i zadziałało. Jakiej wersji VS używasz? –

+0

Jeśli wystąpił problem ze ścieżką, to spowodowałby to wyraźny błąd, chyba że w wyniku zmiany istnieje region cities.csv gdzie indziej bez tej kolumny Populacji –

Odpowiedz

0

Spróbuj kod

let Cities = new CsvProvider<"cities.csv">() 
let cities = new Cities() 
let firstRow = cities.Rows |> Seq.head 
Powiązane problemy