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ź.
można spróbować użyć pełnej ścieżki do pliku CSV? (Czasami F # Interactive wpada w pomieszanie ścieżek ...) –
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? –
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 –