以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] Datatable 的 GetValues 为什么不按取值列排序呢?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=158839)

--  作者:龙潭春早
--  发布时间:2020/12/4 0:37:00
--  [求助] Datatable 的 GetValues 为什么不按取值列排序呢?
帮助中介绍Datatable时说,其GetValues的Sort属性如果省略,则根据取值列排序,通常无需设置。

但是实际应用时,

1、不指定sort,得到的不是按取值列的排序,而是按照数据第一个文字的拼音排序的

   在命令窗口执行代码:

Dim dcNames As List(Of String)
dcNames = DataTables("表C").GetValues("应用场所")
For Each dcName As String In dcNames
Output.Show(dcName)
Next

得到:

宾馆,小馆,旅社,快餐,酒店,饭店,农家乐
餐厅,客栈,酒店,宾馆,餐馆,快餐,小馆
酒店,餐厅,旅社,客栈
客栈,小馆,宾馆,饭店,农家乐,餐厅

而实际上,表C中第一行的数据是:酒店,餐厅,旅社,客栈

2、即使指定取值列为排序列,得到的结果和上面的相同

dcNames = DataTables("表C").GetValues("应用场所","","应用场所")

奇怪啊,为什么呢?



--  作者:有点蓝
--  发布时间:2020/12/4 8:40:00
--  
正常。中文字符串默认就是按拼音排序的,如果要按用来的行顺序排序:

dcNames = DataTables("表C").GetValues("应用场所","_sortkey")

--  作者:龙潭春早
--  发布时间:2020/12/4 15:23:00
--  
哦 那帮助的这个说明应该改一下了,不应该笼统地说是按照取值列排序,误导人哦
--  作者:有点蓝
--  发布时间:2020/12/4 15:46:00
--  
帮助没有问题,您理解不到位而已。取值列存储的是中文,那就是按照拼音排序