以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  排除集合内重复值  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=90537)

--  作者:lur320
--  发布时间: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
--  发布时间:2016/9/16 7:52:00
--  
 Contains   判断集合中是否包含某个值


--  作者:狐狸爸爸
--  发布时间: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
--  发布时间:2016/9/16 15:28:00
--  
厉害,先判断,有不一样的再保存。谢了
--  作者:lur320
--  发布时间: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
--  发布时间:2016/9/16 15:42:00
--  

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

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

--  作者:lur320
--  发布时间: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是多余的,我没有检查狐表爸爸的代码,直接用了。