如何获取类型 F# 中字段的 ID
How to get a the ID of a field in a type F#
如何创建一个函数来搜索数据库并且 return 只是类型的 ID?
其实,我有一个数据库,我可以在那里搜索一对。该对是一个类型,在 F#:
module Types =
[<CLIMutable>]
type Pair = {
Id :int64
PairName : string
}
我的objective是创建一个函数,即return只是给定一个PairName的ID(int)的值。给定这个名称,我已经有一个 return 是一对的函数。
module Query =
let GetSingleByName name = querySingleAsync<Types.Bird> {
script "SELECT * FROM Pair WHERE PairName = @Name LIMIT 1"
parameters (dict ["Name", box name])
}
我怎样才能 return 只是整数?不是所有的 Type.Pair?
我找到的解决方案之一是:
let GetSingleByName name = querySingleAsync<Types.Pair> {
script "SELECT * FROM Pair WHERE PairName = @Name LIMIT 1"
parameters (dict ["Name", box name])
}
let GetIdByName (name:string) = match GetSingleByName name |> Async.RunSynchronously with
| Some(pair)-> pair.Id
| None -> 0 |> int64
let getIdByName name = querySingleAsync<int64> {
script "SELECT Id FROM Pair WHERE PairName = @Name LIMIT 1"
parameters (dict ["Name", box name])
}
如果这不起作用,您必须提供 querySingleAsync
的定义。
或者:
let getIdByName name = async {
let! single = getSingleByName name
return single |> Option.map (fun pair -> pair.Id)
}
如何创建一个函数来搜索数据库并且 return 只是类型的 ID?
其实,我有一个数据库,我可以在那里搜索一对。该对是一个类型,在 F#:
module Types =
[<CLIMutable>]
type Pair = {
Id :int64
PairName : string
}
我的objective是创建一个函数,即return只是给定一个PairName的ID(int)的值。给定这个名称,我已经有一个 return 是一对的函数。
module Query =
let GetSingleByName name = querySingleAsync<Types.Bird> {
script "SELECT * FROM Pair WHERE PairName = @Name LIMIT 1"
parameters (dict ["Name", box name])
}
我怎样才能 return 只是整数?不是所有的 Type.Pair?
我找到的解决方案之一是:
let GetSingleByName name = querySingleAsync<Types.Pair> {
script "SELECT * FROM Pair WHERE PairName = @Name LIMIT 1"
parameters (dict ["Name", box name])
}
let GetIdByName (name:string) = match GetSingleByName name |> Async.RunSynchronously with
| Some(pair)-> pair.Id
| None -> 0 |> int64
let getIdByName name = querySingleAsync<int64> {
script "SELECT Id FROM Pair WHERE PairName = @Name LIMIT 1"
parameters (dict ["Name", box name])
}
如果这不起作用,您必须提供 querySingleAsync
的定义。
或者:
let getIdByName name = async {
let! single = getSingleByName name
return single |> Option.map (fun pair -> pair.Id)
}