F# 什么';csv类型提供程序中缓存的使用是什么?

F# 什么';csv类型提供程序中缓存的使用是什么?,f#,type-providers,F#,Type Providers,我对缓存和缓存行有点困惑 似乎MyCsvType.Load(path).Take(30000).Cache()实际上并没有立即读取30000行。(与序列缓存不同) 那么,既然我们已经有了CacheRows 此外,如果我只对前30000行感兴趣,我应该使用MyCsvType.Load(path).Take(30000)还是MyCsvType.Load(path).rows |>Seq.Take 30000如果查看F#数据源代码,可以看到缓存,Take和其他操作员正在调用相应的Seq.xyz操作(这

我对
缓存
缓存行
有点困惑

似乎
MyCsvType.Load(path).Take(30000).Cache()实际上并没有立即读取30000行。(与序列缓存不同

那么,既然我们已经有了
CacheRows

此外,如果我只对前30000行感兴趣,我应该使用
MyCsvType.Load(path).Take(30000)
还是
MyCsvType.Load(path).rows |>Seq.Take 30000

如果查看F#数据源代码,可以看到
缓存
Take
和其他操作员正在调用相应的
Seq.xyz
操作(这是)

关键的区别在于,当您创建一个类型提供程序而不指定
CacheRows=false
时,默认情况下它实际上会调用
Cache
。因此,诀窍是使用
CacheRows=false
创建一个类型提供程序,然后可以交替使用
Seq.cache
cache
方法(以及其他操作)

let stocks = CsvProvider<"sample.csv", CacheRows=false>.GetSample()
stocks.Take(10).Cache()             // Using methods is now exactly
stocks |> Seq.take 10 |> Seq.cache  // the same as using functions
let stocks=CsvProvider.GetSample()
stocks.Take(10).Cache()//使用方法现在正是
stocks |>Seq.take 10 |>Seq.cache//与使用函数相同