通过C#应用程序Interop使用F#Data CsvProvider

jsc*_*eit 4 c# f# f#-data

极端的noob即将学习的问题:我有一个想在我的C#(通用)应用程序中使用的模块。C#应用程序将下载并解压缩包含12个CSV的文件,这些文件将始终遵循相同的格式。因此,我要做的是提前下载CSV,并将它们添加到我的解决方案中,以便CsvProvider <“ thefile.csv”>中引用的文件将在编译时存在。

namespace ExperimentalFSLibrary    
module CsvHelper =
    open FSharp.Data
    let GetCsvA path = 
        CsvProvider<"thefileA.csv">.Load(path)
Run Code Online (Sandbox Code Playgroud)

然后从我的c#应用程序中调用此命令,如下所示:

var ReceivedCsvA = ExperimentalFSLibrary.CsvHelper.GetCsvA
Run Code Online (Sandbox Code Playgroud)

从F#库获取数据还没有成功

还有一个问题是如何处理十二个不同的文件,因为我必须为CsvProvider指定模板文件,我想我必须编写12个不同的函数?

我在SO周围搜索,发现了让我走到现在的东西,但我碰到了墙。任何帮助,包括健康检查,将不胜感激。

Ree*_*sey 5

CsvProviderFSharp.Data为擦除型供应商。这意味着在C#中没有任何类型可以使用。

诸如此类的许多F#类型提供程序仅在从F#内部使用时才有用。

在这种情况下,最好是解析CSV数据并通过C#代码中的一些API消耗返回所需的结果。

还有一个问题是如何处理十二个不同的文件,因为我必须为CsvProvider指定模板文件,我想我必须编写12个不同的函数?

通常,您需要为每个文件结构(而不是每个文件)提供单独的功能。如果这12个文件都使用相同的column / headers / etc,则单个类型提供程序类型将在每个文件中起作用。提供的静态文件名仅用于确定所生成类型的列结构。