【发布时间】:2011-04-11 06:00:47
【问题描述】:
我编写了以下代码来提取字典序列中 ID 字段的值 并将这些作为一组返回 - 基本上我正在寻找 db 表中的行的 PK 值 我曾经填充字典(每个表行 1 个字典)。代码下面是一些示例数据 被加载到字典序列中。
虽然下面的代码有效,但样式可能更实用 - 我不得不求助于 使用可变列表来构建结果集。所以我觉得不合适。
任何人都愿意在这里提供改进的、更实用的解决方案。
// Extract the PK values from a dictionary and create a key set from these data values
// The expected result here is: set ["PK1"; "PK2"; "PK3"; "PK4"]
let get_keyset (tseq:seq<Dictionary<string,string>>) =
let mutable setres =[]
for x in tseq do
for KeyValue(k,v) in x do
// Extract ID values/keys from each dict
setres <- x.Item("ID")::setres
setres |> List.rev |> Set.ofList
// Sample Data
// First Tuple is PK/ID value
let tabledata = [
[("ID", "PK1"); ("a2","aa"); ("a3", "aaa"); ("a4", "aaaa") ]
[("ID", "PK2"); ("b2","bb"); ("b3", "bbb"); ("b4", "bbbb") ]
[("ID", "PK3"); ("c2","cc"); ("c3", "ccc"); ("c4", "cccc") ]
[("ID", "PK4"); ("d2","dd"); ("d3", "ddd"); ("d4", "dddd") ]
]
//generate dict sequence from datasets
let gendictseq tabledata =
seq {
for tl in tabledata do
let ddict = new Dictionary<string,string>()
for (k,v) in tl do
ddict.Add(k,v)
yield ddict
}
【问题讨论】:
-
如果你使用的是Set.ofList,为什么需要反转列表?
标签: f# dictionary set sequence