2017-03-04 70 views
2

我創建一個CSV類型供應商:Csv類型提供者中的行的類型是什麼?

type AssetInfo = CsvProvider<Sample="AssetInfoFS.csv", // must be a Literal 
          HasHeaders=true, 
          ResolutionFolder=projDataPath, 
          AssumeMissingValues=false, 
          CacheRows=false> 

然後我裝了一些信息,並丟棄某些行:

let assetInfo = AssetInfo.Load(projDataPath + @"AssetInfoFS.csv") 
let traderInfoRecords = 
    assetInfo.Rows 
    |> Seq.filter (fun elem -> Set.contains elem.Ticker tradedTickerSet) 

下一個我試圖創建,將有一排作爲一個記錄類型的值:

type Asset = {Ticker: string; Info: CsvProvider<...>.Row; DataFrame: Frame<DateTime,string>} 

我用MoveNext()得到了CsvProvider<...>.Row然後CurrentGetType()IEnumeratorassetInfo.Rows。不幸的是,編譯器不接受該表達式作爲一種類型。我嘗試了其他的東西,但沒有成功。

如何找到assetInfo的行的類型,以便我可以在資產類型聲明中使用它?

回答

3

就你而言,該行的類型將爲AssetInfo.Row

我做了一個簡短的例子,其中有兩列的CSV,名爲Header1和Header2。我現在可以做到以下幾點:

module Test 

open FSharp.Data 

type File = CsvProvider<"""..\test.csv"""> 

let f (input : File.Row) = input.Header1 

明確命名參數的類型f凡,智能感知顯示我無論在類型字段。

相關問題