2013-12-15 21 views
5

Vì vậy, giả sử tôi có tệp CSV có tiêu đề chứa cột Dân số và Lợi nhuận và tôi muốn làm việc với cột trong tương tác F #. Tôi có đoạn mã sau:Nhà cung cấp loại CSV không thể tìm thấy cột trong F # tương tác

#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 

tôi nhận được một lỗi từ F # tương tác:

lỗi FS0039: Các lĩnh vực, xây dựng hoặc thành viên 'Dân' không được định nghĩa

Điều này có vẻ gây nhầm lẫn cho tôi, bởi vì intellisense trong VS không có vấn đề chọn lên cột này từ dữ liệu của tôi thông qua một nhà cung cấp loại CSV.

Ngoài ra, tôi đã thử tạo một chương trình với cùng một nhà cung cấp loại và tất cả đều hoạt động tốt. Như thế này:

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 

Tôi có thiếu gì đó không? Cảm ơn mọi câu trả lời.

+2

Bạn có thể thử sử dụng đường dẫn đầy đủ đến tệp CSV? (Đôi khi F # Interactive bị lẫn lộn về đường dẫn ...) –

+0

Điều đó thật kỳ lạ. Bạn có chắc chắn rằng bạn đã gửi tất cả các dòng để fsi? Tôi chỉ thử một cái gì đó tương tự như nó đã làm việc. Bạn đang sử dụng phiên bản VS nào? –

+0

Nếu có sự cố với đường dẫn, nó sẽ đưa ra lỗi rõ ràng, trừ khi thay đổi có thành phố.csv ở một nơi khác mà không có cột Dân số –

Trả lời

0

Hãy thử mã này

let Cities = new CsvProvider<"cities.csv">() 
let cities = new Cities() 
let firstRow = cities.Rows |> Seq.head 
Các vấn đề liên quan