Foxtable(狐表)用户栏目专家坐堂 → foxtable在大量数据核对时的表现


  共有12803人关注过本帖树形打印复制链接

主题:foxtable在大量数据核对时的表现

帅哥哟,离线,有人找我吗?
狐狸爸爸
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/12/7 10:05:00 [显示全部帖子]

1、图片要作为附件上传,别人才能看到。

2、一般最好配合一个数据表提问。


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/12/7 11:02:00 [显示全部帖子]

方法都一样,关键要理解:

 

第一列有、第二列无:

For Each dr As DataRow In DataTables("表A").DataRows
    If DataTables("表A").Find("第二列 = '"  & dr("第一列") & "'") Is Nothing Then
        dr("第三列") = True
    Else
        dr("第三列") = False
    End If
Next

 

两列都有:

For Each dr As DataRow In DataTables("表A").DataRows
    If DataTables("表A").Find("第二列 = '"  & dr("第一列") & "'") Is Nothing Then
        dr("第三列") = False
    Else
        dr("第三列") = True
    End If
Next

 

第二列有,第一列无:

For Each dr As DataRow In DataTables("表A").DataRows
    If DataTables("表A").Find("第一列 = '"  & dr("第二列") & "'") Is Nothing Then
        dr("第三列") = True
    Else
        dr("第三列") = False
    End If
Next


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/12/7 11:09:00 [显示全部帖子]

因为同时在循环中同时查询和修改本表,上面的代码效率非常低,高效的是:

 

Dim lst1 As New List(of DataRow)
Dim lst2 AS New List(of DataRow)
For Each dr As DataRow In DataTables("表A").DataRows
    If DataTables("表A").Find("第二列 = '"  & dr("第一列") & "'") Is Nothing Then
        lst1.Add(dr)
    Else
        lst2.Add(dr)
    End If
Next
For Each dr As DataRow In lst1
    dr("第三列") = True
Next
For Each dr As DataRow In lst2
    dr("第三列") = False
Next

其他可以自己照着改。

 

你可以测试这段比较代码的效率,就是1万行,也不到一秒就完成了比较。

[此贴子已经被作者于2010-12-7 11:19:44编辑过]

 回到顶部