我试图从数据库中读取数据,并将它们转换为seq记录。执行时
open FSharp.Data
open FSharp.Data.SqlClient
type foo = {name:int; author:int}
[<Literal>]
let query = "Select * from Authors"
[<Literal>]//DESKTOP-5RIV0K1
let connectionString = "Data Source=DESKTOP-5RIV0K1;Initial Catalog=TestBase;Integrated Security=True"
let cmd = new SqlCommandProvider<query,connectionString>(connectionString)
let result = cmd.Execute() |> printfn "%A"
result我得到了
seq
[{ AuthorID = 1; Name = Some "2" }; { AuthorID = 2; Name = Some "3" };
{ AuthorID = 3; Name = Some "4" }] 但是,当我试图用下面的代码将seq转换为seq时
let result =
for item in cmd.Execute() do
match item.Name, item.AuthorID with
| Some itemName, Some itemAuthor ->
{name = itemName; author = Some itemAuthor }
| _ -> ()我搞错了
一些itemAuthor 错误FS0001这个表达式应该有'int‘类型,但是这里有’a选项‘类型
我做错什么了?
发布于 2019-04-26 21:42:05
你想要匹配这样的记录.
{ AuthorID = 1; Name = Some "2" }...using的图案看起来像这样..。
| Some itemName, Some itemAuthor ->注意,您的AuthorID是一个整数。它不是Option<int>。因此,带有两个值的模式是不兼容的。你应该有这样的模式.
| Some itemName, itemAuthor ->https://stackoverflow.com/questions/55875028
复制相似问题