以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [原创]高效问题分享:字典的键和值设为DataRow类型的应用体会-----能大大提高数据更新的速度  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=145653)

--  作者:ahui010
--  发布时间:2020/2/3 18:21:00
--  [原创]高效问题分享:字典的键和值设为DataRow类型的应用体会-----能大大提高数据更新的速度
在字典中,定义是:
Dim 变量名 As New Dictionary(Of 键类型, 值类型)

其中:
Keys 属性 返回键的集合 
Values 属性 返回值的集合 


我的问题是如下,

如果定义成如这样:

Dim Dic1 As new Dictionary(of DataRow, Integer)

键就定义成了表格的行,我想获这个键的某一列内容是怎么办?

我试了很久,可以这样将字典键的某一列,及对应字典值找出来。

For Each dr As DataRow In dic1.Keys
      Output.show(“键的姓名列:" & dr("姓名") & "--- 对应值:" & dic1(dr))      
Next

如果定义成如这样:
Dim Dic1 As new Dictionary(of DataRow, DataRow)

字典的键和值的数据类型都是表格的行了,我试了很久,可以这样将字典键的某一列,及其对应的字典值的某一列找出来。
 

For Each dr As DataRow In dic1.Keys
      Output.show(“键的姓名列:" & dr("姓名") & "--- 对应值的姓名列:" & dic1(dr)("姓名"))      
Next
 
我本次要分享的问题,是如果将字典的键和值的数据类型都可设为表格的行,键保存老表格的行数据,值保存新表格的行数据,

如果将新表格的内容要更到新表格,用下面的语句,速度能大大的提高:

Dim Dic1 As new Dictionary(of DataRow, DataRow) ‘定义字典,键和值的数据类型都可设为表格的行

For Each dr As DataRow In  DataTables("老表格").DataRows
     Dim tr As DataRow
             tr = DataTables("新表格").sqlfind("客户ID = \'" & dr(“客户ID”)& “’”)
     if tr isnot nothing then
        Dic1.add(dr,tr)  ’键为老表格的行,值为新表格的行
    end if
Next

For Each dr As DataRow In dic1.Keys
   dic1(dr)("姓名") = dr("新姓名")   ‘将值的姓名内容,赋到键的姓名列
   dic1(dr)("身份证号码") = dr("新身份证号码")
   dic1(dr)("性别") = dr("新性别")
   dic1(dr)("公司") = dr("新公司")
   dic1(dr)("发放时间") = dr("新注册时间")
Next
[此贴子已经被作者于2020/2/3 18:22:54编辑过]

--  作者:有点蓝
--  发布时间:2020/2/3 20:26:00
--  
多谢分享。可以看做是查询与赋值并存帮助的扩展应用