繁体   English   中英

F# CsvProvider can't find member in Row error FS0039

[英]F# CsvProvider cant find member in Row error FS0039

我尝试了 Isaac Abraham 书中“使用 F# 进行编程”中的示例。 在其中我只是将 csv 文件导入 F# 脚本并尝试做简单的操作。

#r "nuget: FSharp.Data"

open FSharp.Data
type Football = CsvProvider<"FootballResults.csv">
let data = Football.GetSample().Rows|> Seq.toArray
let work = data |> Seq.filter (fun i -> i.``Full Time Away Goals`` > i.``Half Time Away Goals``)
let print = work |> Seq.take 10 |> Seq.map (fun i -> i.``Half Time Home Goals``) 
let print2 = print |> Seq.iter (fun i -> printfn "%i" i)

我收到一个错误:

script.fsx(6,43): error FS0039: The type 'Row' does not define the field, constructor or member 'Full Time Away Goals'.

我几乎被困在这里。 Csv 文件来自这里,我可以在智能感知 window 中看到字段名称,但无论我尝试什么,我都无法对字段进行任何处理。

我使用 VsCode

Microsoft (R) F# Interactive version 11.0.0.0 for F# 5.0
Copyright (c) Microsoft Corporation. All Rights Reserved.

更新:

我使用了绝对路径,它起作用了; 但我必须说我在同一目录中有脚本和 csv 文件。

Directory of C:\study\fsharp_Study\csv

20.01.2021  15:20    <DIR>          .
20.01.2021  15:20    <DIR>          ..
20.01.2021  15:19            26 446 FootballResults.csv
21.01.2021  08:29               373 script.fsx
               2 File(s)         26 819 bytes
               2 Dir(s)  131 790 934 016 bytes free 

问题是 F# 在运行时找不到“FootballResults.csv”,因为它位于与运行脚本的目录不同的目录中。解决此问题的最简单方法是指定.csv 的完整路径文件:

type Football = CsvProvider<"C:\My\Full\Path\FootballResults.csv">

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM