如何将 IList<IList<Object>> 转换为 F# 中特定类型的列表
How to Cast IList<IList<Object>> to list of specific type in F#
我在寻找如何将字符串数组转换为特定类型时遇到了一些问题。
这是我的代码
type plItem = {
sku: string
name: string
size: string
buy: decimal
sell: decimal
barcode: string
}
// .... ( get values from google sheets )
let values:IList<IList<Object>> = response.Values
let pl = values |> Seq.map ( fun item -> Seq.toArray )
在代码的末尾 - pl 现在是一个字符串数组。我想让它成为(以上)plItem 类型的数组我不确定最简单的方法。
如果我对问题的理解正确,你有一个列表列表,其中外部列表代表行,嵌套列表代表列。您想将行变成记录,而列对应于各个记录字段。
没有自动执行此操作的方法。您只需提取单独的列并将它们转换为适当的类型(通过将类型拆箱为 string
或获取字符串值然后解析它)。像这样:
open System
open System.Collections.Generic
type plItem = {
sku: string
name: string
size: string
buy: decimal
sell: decimal
barcode: string
}
let values:IList<IList<Object>> =
[| [| box "12660"; box "Probiotics 14 Strains"; box "60 VCaps";
box "31.46"; box "50.35"; box "9403067126606"; |] :> IList<_>
|] :> IList<_>
let pl = values |> Seq.map (fun row ->
{ sku = unbox row.[0]
name = unbox row.[1]
size = unbox row.[2]
buy = decimal (unbox<string> row.[3])
sell = decimal (unbox<string> row.[4])
barcode = unbox row.[5] })
我在寻找如何将字符串数组转换为特定类型时遇到了一些问题。 这是我的代码
type plItem = {
sku: string
name: string
size: string
buy: decimal
sell: decimal
barcode: string
}
// .... ( get values from google sheets )
let values:IList<IList<Object>> = response.Values
let pl = values |> Seq.map ( fun item -> Seq.toArray )
在代码的末尾 - pl 现在是一个字符串数组。我想让它成为(以上)plItem 类型的数组我不确定最简单的方法。
如果我对问题的理解正确,你有一个列表列表,其中外部列表代表行,嵌套列表代表列。您想将行变成记录,而列对应于各个记录字段。
没有自动执行此操作的方法。您只需提取单独的列并将它们转换为适当的类型(通过将类型拆箱为 string
或获取字符串值然后解析它)。像这样:
open System
open System.Collections.Generic
type plItem = {
sku: string
name: string
size: string
buy: decimal
sell: decimal
barcode: string
}
let values:IList<IList<Object>> =
[| [| box "12660"; box "Probiotics 14 Strains"; box "60 VCaps";
box "31.46"; box "50.35"; box "9403067126606"; |] :> IList<_>
|] :> IList<_>
let pl = values |> Seq.map (fun row ->
{ sku = unbox row.[0]
name = unbox row.[1]
size = unbox row.[2]
buy = decimal (unbox<string> row.[3])
sell = decimal (unbox<string> row.[4])
barcode = unbox row.[5] })