假设我有一个包含“人口”和“利润”两列的 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: 字段、构造函数或成员'Population'未定义
这对我来说似乎很令人困惑,因为VS中的智能感知没有问题,可以通过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
我有什么遗漏吗?谢谢任何回答。
xyzzy
,尝试执行以锁定TP到FSI会话,然后将列重命名为Population
并在同一FSI会话中再次尝试执行,则可能发生此情况。然后,VS(和Intellisense)中的TP实例将知道属性名称更改,但绑定FSI的实例不会。请尝试重置FSI会话并重复运行尝试。 - Gene Belitski