以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]如何将两个集合合并成一个集合,并排除相同的元素  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=136345)

--  作者:夏许多雪
--  发布时间:2019/6/11 16:47:00
--  [求助]如何将两个集合合并成一个集合,并排除相同的元素
有两个集合 sb1s和 sb2s,各包括几个数组元素,要求将两个集合合并成一个集合,并将相同元素只取一个值,按下列程序运行后,是将两个集合全部合并,并没有去除相同元素,请帮忙看一下哪里不对。

Dim sb1s As List(of String())
sb1s = DataTables("职卫明细").GetValues("仪器编号1|仪器型号1|仪器名称1","仪器编号1 > \'\'") 
Dim sb2s As List(of String())
sb2s = DataTables("职卫明细").GetValues("仪器编号2|仪器型号2|仪器名称2","仪器编号2 > \'\'")  
If sb2s.Count > 0 Then
For i As Integer = 0 To sb2s.count - 1
If sb1s.Contains(sb2s(i)) = False Then
sb1s.Add(sb2s(i))
End If
Next
End If

--  作者:有点蓝
--  发布时间:2019/6/11 20:55:00
--  
代码没有问题。上传实例看看
--  作者:夏许多雪
--  发布时间:2019/6/11 22:18:00
--  
在命令窗口中执行下列代码,可以看出并没有去除相同的数组。

Dim sb1s As List(of String())
sb1s = DataTables("职卫明细").GetValues("仪器编号1|仪器型号1|仪器名称1","仪器编号1 > \'\'") 
Dim sb2s As List(of String())
sb2s = DataTables("职卫明细").GetValues("仪器编号2|仪器型号2|仪器名称2","仪器编号2 > \'\'")  
If sb2s.Count > 0 Then
For i As Integer = 0 To sb2s.count - 1
If sb1s.Contains(sb2s(i)) = False Then
sb1s.Add(sb2s(i))
End If
Next
End If
For i As Integer = 0 To sb1s.Count - 1
Output.Show(sb1s(i)(0))
Output.Show(sb1s(i)(1))
Output.Show(sb1s(i)(2))
Next

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.zip

--  作者:有点蓝
--  发布时间:2019/6/11 23:04:00
--  
数组集合是无法使用Contains进行判断的,试试下面代码就明白了

Dim str() As String = {"1","2"}
Dim str2() As String = {"1","2"}
Dim sb1s As new List(of String())
sb1s.Add(str)
Output.Show(sb1s.Contains(str2))

这样就可以

Dim sb1s As List(of String)
sb1s = DataTables("职卫明细").SQLGetValues("仪器编号1 + \',\' + 仪器型号1 + \',\' + 仪器名称1","仪器编号1 > \'\'")
Dim sb2s As List(of String)
sb2s = DataTables("职卫明细").SQLGetValues("仪器编号2 + \',\' + 仪器型号2 + \',\' + 仪器名称2","仪器编号2 > \'\'")

If sb2s.Count > 0 Then
    For i As Integer = 0 To sb2s.count - 1
        If sb1s.Contains(sb2s(i)) = False Then
            sb1s.Add(sb2s(i))
        End If
    Next
End If
For i As Integer = 0 To sb1s.Count - 1
    Output.Show(sb1s(i))
Next


--  作者:夏许多雪
--  发布时间:2019/6/12 13:59:00
--  
知道了,数组集合无法使用Contains进行判断,只有另想办法了,谢谢。