F# 将字典键序列转换为一个集合

F# 将字典键序列转换为一个集合,f#,dictionary,set,sequence,key,F#,Dictionary,Set,Sequence,Key,下面的代码列出了字典序列中的一组键(每个dict基本上是数据库中的一行)。(我想将键转换为一组,以便比较2 db表) 然而,我不想打印键集,而是想从函数返回它,但我在类型推断方面遇到了问题。尝试了以下操作,但不起作用 我想做的是以列表数组的形式返回这些值(而不是打印它们) 我在这里遗漏了什么?使用而不是序列iter: let get_keyset tblseq = tblseq |> Seq.map (fun (x:Dictionary<_,_>) ->

下面的代码列出了字典序列中的一组键(每个dict基本上是数据库中的一行)。(我想将键转换为一组,以便比较2 db表)

然而,我不想打印键集,而是想从函数返回它,但我在类型推断方面遇到了问题。尝试了以下操作,但不起作用

我想做的是以列表数组的形式返回这些值(而不是打印它们)

我在这里遗漏了什么?

使用而不是
序列iter

let get_keyset tblseq =
    tblseq
    |> Seq.map (fun (x:Dictionary<_,_>) -> x.Keys |> set)
    |> Array.ofSeq
让我们获取密钥集tblseq=
tblseq
|>Seq.map(乐趣(x:字典)->x.键|>set)
|>A.ofSeq数组

按照ildjarn的建议,使用
Seq.map
是一种选择(您可能希望在末尾添加
Array.ofSeq
,以获得您在问卷中所说的集合数组)

另一种方法是使用数组理解:

let get_keyset (tblseq:seq<System.Collections.Generic.Dictionary<_, _>>) = 
    [| for x in tblseq -> x.Keys |> Set.ofSeq |]
let get_keyset tblseq =
    tblseq
    |> Seq.map (fun (x:Dictionary<_,_>) -> x.Keys |> set)
    |> Array.ofSeq
let get_keyset (tblseq:seq<System.Collections.Generic.Dictionary<_, _>>) = 
    [| for x in tblseq -> x.Keys |> Set.ofSeq |]
let get_keyset tblseq = 
    [| for x in tblseq ->
         set [ for (KeyValue(k, v)) in x -> k ] |]