【发布时间】:2019-09-15 17:16:54
【问题描述】:
我有一个像这样的歧视性工会
type AbcJson = JsonProvider<"""
{
"Id": 1234,
"List": [
{
"BT": "abc",
"Year": 2019,
"A": 9223372036854775806
},
{
"BT": "bottomUp",
"Year": 2019
}
]
}
""">
type Event =
| Cdf of CdfJson.Root
| Abc of AbcJson.Root
我还有一个从 db 返回值的函数
type g = SqlCommandProvider<"
Select [BT], [Year], [A] from dbo.Abc;
" , connectionString>
let dbGet =
use cmd = new g(connectionString)
let data = cmd.Execute()
data |> Seq.toArray
let data = dbGet
printfn "%A" data
// [|{ BT = "abc"; Year = 2019; A = Some 1L };
// { BT = "abc"; Year = 2019; A = None }|]
但是当我尝试这样做时
let q = Abc(AbcJson.Root(1002, data));
我收到这样的错误
Type mismatch. Expecting a
'JsonProvider‹...>.List []'
but given a 'SqlCommandProvider<...>.Record []'
The type 'JsonProvider‹...>.List' does not match the type
'SqICommandProvider<...>.Record'
我无法投射SqlCommandProvider<...>.Record [] to JsonProvider‹...>.List []。我该怎么做才能投射SqlCommandProvider<...>.Record [] to JsonProvider‹...>.List []?某种参考资料或文档会很有帮助。
【问题讨论】:
标签: .net types functional-programming f#