2017-03-04 5 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()assetInfo.Rowsの場合はIEnumeratorです。残念ながら、コンパイラはその式を型として受け入れません。私は成功しなかった他のことを試みた。

アセットタイプ宣言で使用できるように、assetInfoという行のタイプを見つけるにはどうすればよいですか?

答えて

3

あなたの場合、行のタイプはAssetInfo.Rowです。

私は、Header1とHeader2という名前の2つの列を持つCSVがある簡単な例を作成しました。私は今、次のことが可能です。

明示的 fに引数の型に名前を付けることで、インテリセンスが、私のタイプのフィールドの両方を示して
module Test 

open FSharp.Data 

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

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

関連する問題