首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >f#将seq转换为seq记录。

f#将seq转换为seq记录。
EN

Stack Overflow用户
提问于 2019-04-26 21:15:05
回答 1查看 112关注 0票数 0

我试图从数据库中读取数据,并将它们转换为seq记录。执行时

代码语言:javascript
复制
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

我得到了

代码语言:javascript
复制
seq
  [{ AuthorID = 1; Name = Some "2" }; { AuthorID = 2; Name = Some "3" };
   { AuthorID = 3; Name = Some "4" }] 

但是,当我试图用下面的代码将seq转换为seq时

代码语言:javascript
复制
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选项‘类型

我做错什么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-26 21:42:05

你想要匹配这样的记录.

代码语言:javascript
复制
{ AuthorID = 1; Name = Some "2" }

...using的图案看起来像这样..。

代码语言:javascript
复制
| Some itemName, Some itemAuthor ->

注意,您的AuthorID是一个整数。它不是Option<int>。因此,带有两个值的模式是不兼容的。你应该有这样的模式.

代码语言:javascript
复制
| Some itemName, itemAuthor ->
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55875028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档