我从使用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表:
<表类>k c tbody><<tr>0 1b 表类>
一个可行的解决方案是从对象构造一个记录:
let toA c =
{k = c.k; c = c.c }
cmd.Execute()
|> Seq.map toA