如何将给定类型的对象转换为记录?



我从使用SqlCommandProvider得到一个IEnumerable对象。这些对象匹配我的行和列。我们称它为b,在我的程序中,我也创建了一个匹配这些列的类型。让我们把这个记录称为a .我如何根据B的值实际转换/强制转换/构造a类型的记录c ?

type A = {k: int; c: string}
let a:A = { k = 1; c = "c" }
let b = {| k = 1; c = "c" |} // lets say that this one simulate the sql's object
let c:A = b
printfn "%A" a
printfn "%A" b
printfn "%A" c

上网试试!

我得到了一个类型不匹配的错误:

错误FS0001:该表达式的类型应该是'A',但这里的类型是'{|c: string;K: int|}'

提供程序的完整示例代码:

type A = {k: int; c: string}
let toA c =
(A)c // ???
do
use cmd = new SqlCommandProvider<"
SELECT k, c
FROM Examples
" , connectionString>(connectionString)
cmd.Execute() |> Seq.map toA

sql表:

<表类>kctbody><<tr>01b

一个可行的解决方案是从对象构造一个记录:

let toA c =
{k = c.k; c = c.c }
cmd.Execute()
|> Seq.map toA

最新更新