F#处理csv,按记录解析记录

Abs*_*act 2 csv f#

我是F#的新手基本上我正在尝试使用FileHelpers库来按记录导入csv记录.所以我可以将每个对象放在队列中.

let importOrders (filePath:string) = do
       let engine = new FileHelpers.FileHelperAsyncEngine(typeof<DataTypes.Order.OrderType>)
       engine.BeginReadFile(filePath)
       for o in engine do
         unProccessedData.Enqueue(o)
Run Code Online (Sandbox Code Playgroud)

然而,它说引擎不是一个可以枚举其值的类型,但它实现了IEnumerable.任何人对可能的修复或不同的方法有任何建议.

我需要能够按记录处理csv记录,将每个记录转换为orderType,然后将订单存储到队列中.谢谢你的帮助

Tom*_*cek 6

engine(称为FileHelperAsyncEngine)的类型仅实现非泛型版本IEnumerable,但它不实现IEnumerable<T>F#编译器所需的泛型.

您需要将非泛型转换IEnumerable为泛型IEnumerable<obj>(或者转换为泛型类型的其他实例,具体取决于集合中值的类型).以下应该做的伎俩:

let importOrders (filePath:string) = 
    let engine = new FileHelpers.FileHelperAsyncEngine(typeof<OrderType>) 
    engine.BeginReadFile(filePath) 
    for o in engine |> Seq.cast<obj> do // NOTE: Conversion using Seq.cast
        unProccessedData.Enqueue(o) 
Run Code Online (Sandbox Code Playgroud)