以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]字典排序问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=83981)

--  作者:pcxjxjhkw
--  发布时间:2016/4/20 16:18:00
--  [求助]字典排序问题

一字典,键为日期型,值为字符型。

问题:如何字典中的项将键按日期排序?谢谢


--  作者:大红袍
--  发布时间:2016/4/20 16:26:00
--  

dim dmp As New TableDataMap
dmp.DataTable = "客户" \'指定数据来源表
dmp.ValueCol = "ID" \'指定取值列
dmp.DisplayCol = "公司" \'指定显示列
\'指定下拉列表时显示哪些列的数据
dmp.ListCols = "ID,公司,姓氏,名字,职务,业务电话,传真号,地址,城市,邮政编码"
dmp.Sort = "城市" \'指定排序方式
Tables("订单").Cols("客户 ID").DataMap = dmp.CreateDataMap() \'生成并设置DataMap

 

 


http://www.foxtable.com/help/topics/2653.htm

 

[此贴子已经被作者于2016/4/20 16:26:09编辑过]

--  作者:pcxjxjhkw
--  发布时间:2016/4/20 16:42:00
--  

不是动态字典。

 


--  作者:大红袍
--  发布时间:2016/4/20 16:45:00
--  

Dim dic As New SortedDictionary(of Date, String)
dic.add("2016-01-05", "广东")
dic.add("2015-05-15", "湛江")
dic.add("2016-03-03", "中国")


For Each i As String In dic.Keys
    msgbox(i & " " & dic(i))
Next


--  作者:pcxjxjhkw
--  发布时间:2016/4/20 16:46:00
--  

假设字典项有:

键                值

A2014年3月:C

A2013年1月:A

B2013年1月:B

 

 

键为字符型,但可以转换为日期型,

经按日期排序后实现:

键 值

A2013年1月:A

B2013年1月:B

A2014年3月:C

 

日期中存在相同的年月。

[此贴子已经被作者于2016/4/20 16:48:09编辑过]

--  作者:大红袍
--  发布时间:2016/4/20 16:50:00
--  
 不可以直接排序。
--  作者:pcxjxjhkw
--  发布时间:2016/4/20 16:53:00
--  

如果键为字符型,值为日期型,

如何按值排序呢

[此贴子已经被作者于2016/4/20 16:57:35编辑过]

--  作者:大红袍
--  发布时间:2016/4/20 17:01:00
--  

mark 选择排序

 

Dim dic As New Dictionary(of String, String)
dic.add("A2016-01-05", "广东")
dic.add("B2015-05-15", "湛江")
dic.add("A2016-03-03", "中国")

Dim keys As new List(Of String)
For Each key As String In dic.Keys
    keys.add(key)
Next

Dim i As Integer, j As Integer

For i = 0 To keys.count - 1
    For j = i + 1 To keys.count -1
        If right(keys(i), 10) > right(keys(j), 10) Then
            Dim temp = keys(i)
            keys(i) = keys(j)
            keys(j) = temp
        End If
    Next j
Next i

For Each key As String In keys
    msgbox(dic(key))
Next

 


--  作者:pcxjxjhkw
--  发布时间:2016/4/20 17:04:00
--  

老师,如果值相同,排序后如何找到对应的键?

 

如:Dim dic As New Dictionary(of String, Date)
dic.add("A", "2015-01-01")
dic.add("B", "2015-03-01")
dic.add("C", "2015-01-01")

 

按值排序后为:

"A", "2015-01-01"

"C", "2015-01-01"
"B", "2015-03-01"

[此贴子已经被作者于2016/4/20 17:11:26编辑过]

--  作者:大红袍
--  发布时间:2016/4/20 17:11:00
--  
 键相同?键是唯一的啊。