csv - FileHelpers 类型中的字段顺序

标签 csv f# filehelpers

我正在使用 Filehelpers 读取一个简单的 CSV 文件 - 该文件只是一个键值对。 (字符串, int64)

我为此编写的 f# 类型是:

type MapVal (key:string, value:int64) =
    new()= MapVal("",0L)
    member x.Key = key
    member x.Value = value

我在这里遗漏了一些基本的东西,但 FileHelpers 总是假定字段的顺序与我指定的相反 - 就像在 Value, Key 中一样。

let dfe = new DelimitedFileEngine(typeof<MapVal>)
let recs = dfe.ReadFile(@"D:\e.dat")
recs |> Seq.length

我在这里错过了什么?

最佳答案

主要构造函数参数的顺序不一定决定字段在类型中出现的顺序(实际上,取决于参数的使用方式,它们甚至可能不会导致生成字段)。在我看来,FileHelpers 没有提供使用属性而不是字段的方法这一事实是不幸的。如果您想更好地控制类的物理布局,则需要显式声明字段:

type MapVal = 
    val mutable key : string
    val mutable value : int64
    new() = { key = ""; value = 0L }
    new(k, v) = { key = k; value = v }
    member x.Key = x.key
    member x.Value = x.value

关于csv - FileHelpers 类型中的字段顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6163356/

相关文章:

c# - F# 和 C# 中 COM 对象创建的差异

c# - FileHelper 转义分隔符

c# - 如果值为空格,则不会调用 FileHelpers FieldConverter

MySQL 比较现有记录

c++ - 使用 C++ 解析非常大的 CSV 文件

F# ionide websharperserverclient - 如何运行

c# - 如何使用 FileHelpers 创建用于写入 csv 文件的记录

Python:追加列表实际上并没有追加它?

python - 处理大型 CSV 文件的文件夹

f# - 初始化字典的最短方法