我创建了一个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>}
我使用CsvProvider<...>.Row
然后MoveNext()
和Current
GetType()
IEnumerator
获得assetInfo.Rows
assetInfo
。不幸的是,编译器不接受该表达式作为类型。我尝试了其他一些没有成功的事情。
如何找到DELETE placement, employees
FROM placement, employees
WHERE placement.id_emp = employees.id_emp
AND employees.id_emp = 113;
行的类型,以便我可以在资产类型声明中使用它?
答案 0 :(得分:3)
在您的情况下,该行的类型为AssetInfo.Row
。
我做了一个简短的例子,我有一个带有两列的CSV,名为Header1和Header2。我现在可以做到以下几点:
module Test
open FSharp.Data
type File = CsvProvider<"""..\test.csv""">
let f (input : File.Row) = input.Header1
通过明确地将参数类型命名为f
,Intellisense会向我显示该类型的两个字段。