Foxtable(狐表)用户栏目专家坐堂 → [求助]求助 这段代码的优化写法!!


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

主题:[求助]求助 这段代码的优化写法!!

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


加好友 发短信
等级:五尾狐 帖子:1165 积分:9032 威望:0 精华:1 注册:2011/5/25 16:33:00
[求助]求助 这段代码的优化写法!!  发帖心情 Post By:2012/5/18 12:46:00 [只看该作者]

Dim cnt As Integer
Dim lj As Boolean = False
Dim str As String = "详|调|合|离|员|离职时间|备注|系统密码|系统开启|系统在线与否|空白单元格|信息完整率"
Dim Values() As String
Values = Str.split("|")
For Each cl As DataCol In dt.datacols
    lj = False
    For Index As Integer = 0 To Values.Length - 1
        If Values(Index) = cl.name Then
            lj = True
        End If
    Next
    If lj = False Then
        cnt = cnt  +  dt.Compute("Count([_identify])", cl.Name & " Is not NULL ")
    End If
Next

 

 

之前想这样写的 但是出错
Dim str As String = "详|调|合|离|员|离职时间|备注|系统密码|系统开启|系统在线与否|空白单元格|信息完整率"
For Each cl As DataCol In dt.datacols
    If cl.name not In str.Split("|") Then
        cnt = cnt  +  dt.Compute("Count([_identify])", cl.Name & " Is not NULL ")
    End If
Next

 

 


图片点击可在新窗口打开查看此主题相关图片如下:1111.jpg
图片点击可在新窗口打开查看

 

 

 

最原始的代码 判断太累了

 

Dim cnt As Integer
For Each cl As DataCol In dt.datacols
If cl.name <> "详" And cl.name <> "调" And cl.name <> "合" And cl.name <> "离" And cl.name <> "员" And cl.name <> "离职时间" And cl.name <> "备注" And cl.name <> "系统密码" And cl.name <> "系统开启" And cl.name <> "系统在线与否" And cl.name <> "空白单元格"  And cl.name <> "信息完整率"  Then
  cnt = cnt  +  dt.Compute("Count([_identify])", cl.Name & " Is not NULL ")
 End If
Next

[此贴子已经被作者于2012-5-18 12:55:49编辑过]

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


加好友 发短信
等级:小狐 帖子:302 积分:1860 威望:0 精华:0 注册:2012/4/27 11:34:00
  发帖心情 Post By:2012/5/18 13:13:00 [只看该作者]

Dim s1,s2,s3 As String
s1 = "详|调|合|离|员|离职时间|备注|系统密码|系统开启"
s1+ = "|系统在线与否|空白单元格|信息完整率"
s2 = "Count([_identify])"
For Each cl As DataCol In dt.datacols
    If s1.
Contains(cl.name) = False Then
         s3 = cl.Name & " Is not NULL"
         cnt+ =  dt.Compute(s2, s3)
    End If
Next
[此贴子已经被作者于2012-5-18 13:18:02编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1165 积分:9032 威望:0 精华:1 注册:2011/5/25 16:33:00
  发帖心情 Post By:2012/5/18 13:24:00 [只看该作者]

s1+???

cnt+ ???  什么原理?


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


加好友 发短信
等级:小狐 帖子:302 积分:1860 威望:0 精华:0 注册:2012/4/27 11:34:00
  发帖心情 Post By:2012/5/18 13:27:00 [只看该作者]

疊加

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


加好友 发短信
等级:五尾狐 帖子:1165 积分:9032 威望:0 精华:1 注册:2011/5/25 16:33:00
  发帖心情 Post By:2012/5/18 13:28:00 [只看该作者]

foxman  还有一点

 

s1.Contains  直接包含的话 例如:我上面的  |离|  如果去掉后 再判断  是否包含离      还是为true   因为 我还有个 |离职时间|  也包含离

 

最好是分开 然后contains

 

请问该怎么优化下?


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


加好友 发短信
等级:五尾狐 帖子:1165 积分:9032 威望:0 精华:1 注册:2011/5/25 16:33:00
  发帖心情 Post By:2012/5/18 13:36:00 [只看该作者]

Dim cnt As Integer
Dim s1 As String
Dim s2 As New List(of String)
s1 = "详|调|合|离|员|离职时间|备注|系统密码|系统开启|系统在线与否|空白单元格|信息完整率"
s2.AddRange(s1.Split("|"))
For Each cl As DataCol In dt.datacols
    If s2.Contains(cl.name) Then
         cnt+ =  dt.Compute("Count([_identify])", cl.Name & " Is not NULL")
    End If
Next

 

借鉴了foxman一下  集合里有contains方法~    各位看看还能否再优化!


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


加好友 发短信
等级:小狐 帖子:302 积分:1860 威望:0 精华:0 注册:2012/4/27 11:34:00
  发帖心情 Post By:2012/5/18 13:36:00 [只看该作者]

Dim s1,s2,s3 As String
s1 = "|详|调|合|离|员|离职时间|备注|系统密码|系统开启"
s1+ = "|系统在线与否|空白单元格|信息完整率|"
s2 = "Count([_identify])"
For Each cl As DataCol In dt.datacols
    If s1.
Contains("|" & cl.name & "|") = False Then
         s3 = cl.Name & " Is not NULL"
         cnt+ =  dt.Compute(s2, s3)
    End If
Next

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


加好友 发短信
等级:五尾狐 帖子:1165 积分:9032 威望:0 精华:1 注册:2011/5/25 16:33:00
  发帖心情 Post By:2012/5/18 13:40:00 [只看该作者]

多谢  呵呵~!~~~~~~~  学到了不少图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
blackzhu
  9楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2012/5/18 13:48:00 [只看该作者]

呵呵,代码无所不能.

 回到顶部