F#处理csv,按记录解析记录
问题描述:
我是F#的新手,基本上我试图使用FileHelpers库通过记录导入csv记录。所以我可以将每个对象放入一个队列中。F#处理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)
但是它说,发动机是不是一个类型谁的价值可以列举但它实现了IEnumerable。任何人对于可能的修复方法或不同的方法都有任何建议。
我需要能够通过记录处理csv记录,将每个记录转换为orderType,然后将订单存储到队列中。感谢您的帮助球员
答
类型的engine
(被称为FileHelperAsyncEngine
)仅实现的IEnumerable
非通用版本,但它没有实现它是由F#编译器所需的通用IEnumerable<T>
。
您需要将非泛型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)
完美! :)这非常有道理。干杯! – Abstract 2012-03-25 12:30:28