Foxtable(狐表)用户栏目专家坐堂 → 排除集合内重复值


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

主题:排除集合内重复值

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


加好友 发短信
等级:五尾狐 帖子:1030 积分:8973 威望:0 精华:0 注册:2015/8/12 16:28:00
排除集合内重复值  发帖心情 Post By:2016/9/16 0:35:00 [只看该作者]

如下代码

 

Vals = DataTables("air_shipment").GetValues("FOB_1_Currency|CIF_1_Currency|DDU_1_Currency", "[OriginCountry] is not null")
val.AddRange(vals)
Vals = DataTables("int_LCL").GetValues("FOB_1_Currency|CIF_1_Currency|DDU_1_Currency", "[Origin_Country] is not null")
val.AddRange(vals)
Vals = DataTables("international_FCL").GetValues("FOB_1_Currency|CIF_1_Currency|DDU_1_Currency", "[Origin_Country] is not null")
val.AddRange(vals)

以上为从各个表里面的数个列抓取不同的货币。
Dim Vals2 As new List(of String)
For i As Integer = 0 To Vals.Count - 1
    For u As Integer =0 To 2
        vals2.add(val(i)(u))
    Next
Next

以上为将字符数组的合并到一个集合里面,变成1维。

 

问题:如何排除掉vals2这个1维集合里面的重复的值?

 


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


加好友 发短信
等级:二尾狐 帖子:574 积分:4252 威望:0 精华:0 注册:2015/5/13 8:32:00
  发帖心情 Post By:2016/9/16 7:52:00 [只看该作者]

 Contains   判断集合中是否包含某个值


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2016/9/16 8:49:00 [只看该作者]

Dim Vals2 As new List(of String)
For i As Integer = 0 To Vals.Count - 1
    For u As Integer =0 To 2
        If  vals2.Contains(vals(i)(u)) = False Then
            vals2.add(vals(i)(u))
        End If
    Next
Next

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


加好友 发短信
等级:五尾狐 帖子:1030 积分:8973 威望:0 精华:0 注册:2015/8/12 16:28:00
  发帖心情 Post By:2016/9/16 15:28:00 [只看该作者]

厉害,先判断,有不一样的再保存。谢了

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


加好友 发短信
等级:五尾狐 帖子:1030 积分:8973 威望:0 精华:0 注册:2015/8/12 16:28:00
  发帖心情 Post By:2016/9/16 15:40:00 [只看该作者]

我在使用这个代码的时候遇到了另外一个问题,就是有一些元素虽然没有重复但是,也被排除掉了。红色为原先的旧代码,虽有重复,但是一共有5个元素出现。
'For i As Integer = 0 To Vals.Count - 1
    'For u As Integer =0 To 2
        'vals2.add(val(i)(u))
    'Next
'Next

红色部分代码可以提取5个元素

 


For i As Integer = 0 To Vals.Count - 1
    For u As Integer =0 To 2
        If  vals2.Contains(vals(i)(u)) = False Then
            vals2.add(vals(i)(u))
        End If
    Next
Next

排除相同值得代码只显示了3个元素,有两个消失了。

 


DataTables("currency_maintain").DataRows.Clear
For i As Integer = 0 To Vals2.Count - 1
    Dim dr As DataRow = DataTables("currency_maintain").AddNew()
    dr("currency") = Vals2(i)
Next


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


加好友 发短信
等级:五尾狐 帖子:1030 积分:8973 威望:0 精华:0 注册:2015/8/12 16:28:00
  发帖心情 Post By:2016/9/16 15:42:00 [只看该作者]


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

图片点击可在新窗口打开查看此主题相关图片如下:捕获2.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:五尾狐 帖子:1030 积分:8973 威望:0 精华:0 注册:2015/8/12 16:28:00
  发帖心情 Post By:2016/9/16 15:54:00 [只看该作者]

知道错在哪里了,

 

For i As Integer = 0 To Vals.Count - 1
    For u As Integer =0 To 2
        If  vals2.Contains(vals(i)(u)) = False Then
            vals2.add(vals(i)(u))
        End If
    Next
Next
这里的S是多余的,我没有检查狐表爸爸的代码,直接用了。


 回到顶部