2013-12-15 58 views
5

因此,假設我有一個包含列Population和Profit的標題的CSV文件,我希望在F#交互式中使用它。我有以下代碼:CSV類型提供程序無法在F#交互式中找到列

#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 

我從F#互動的錯誤:

錯誤FS0039:沒有定義

這似乎領域,構造或成員 '人口'讓我感到困惑,因爲VS中的intellisense通過CSV類型的提供者從我的數據中提取這一列沒有任何問題。

此外,我試圖創建一個程序與相同類型的提供程序,它都可以正常工作。像這樣:

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 

我是否錯過了什麼?謝謝你的回答。

+2

你可以嘗試使用完整路徑CSV文件? (有時F#Interactive會對路徑感到困惑......) –

+0

這很奇怪。你確定你已經發送了所有的行到fsi?我只是嘗試了一些類似的工作。你使用什麼版本的VS? –

+0

如果路徑存在問題,則會給出明確的錯誤,除非通過更改,在其他地方沒有cities.csv而沒有該人口列 –

回答

0

試試這個代碼

let Cities = new CsvProvider<"cities.csv">() 
let cities = new Cities() 
let firstRow = cities.Rows |> Seq.head 
相關問題