以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]多值去除重复值  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=148286)

--  作者:miaoqingqing
--  发布时间:2020/4/3 21:03:00
--  [求助]多值去除重复值
求助
中国,中国,美国,英国
去除重复值  中国,得到
中国,美国,英国
[此贴子已经被作者于2020/4/3 21:03:34编辑过]

--  作者:qwz405
--  发布时间:2020/4/5 10:12:00
--  
Dim nms() As String = {"11","22","33","22","33","44"}    \'定义包含现有数据的数组
Dim lst As new List(of String)     \'定义一个字符集合
For Each s As String In nms        \'获取数组中的每个值
    If lst.Contains(s) Then
        Output.Show(s & "重复")     \'如果集合中已存在,就显示
    Else
        lst.Add(s)    \'没有,则添加到集合
    End If
Next

--  作者:miaoqingqing
--  发布时间:2020/4/8 15:37:00
--  
求助,下面代码怎么修改,实现汇总 参与人,排除重复值
想实现效果
中国,中国,美国
去除重复值  中国,得到
中国,美国

下面代码不能排除重复的参与人

Dim drf As DataRow = e.DataRow
Select Case e.DataCol.Name
     Case "裁判员","守门员","中锋队员"
        drf("参与人") = IIF(drf.IsNull("裁判员"),"",drf("裁判员")+",")
        drf("参与人") += IIF(drf.IsNull("守门员"),"",drf("守门员")+",")
        drf("参与人") += IIF(drf.IsNull("中锋队员"),"",drf("中锋队员")+",")
        drf("参与人") = drf("参与人").trimend(",")
End Select
[此贴子已经被作者于2020/4/8 15:56:52编辑过]

--  作者:有点蓝
--  发布时间:2020/4/8 17:04:00
--  
Dim drf As DataRow = e.DataRow
Select Case e.DataCol.Name
    Case "裁判员","守门员","中锋队员"
        Dim lst As new List(of String)
        Dim nms As String = {"裁判员","守门员","中锋队员"}
        For Each s As String In nms
            If drf.IsNull(s) = False AndAlso lst.Contains(s) = False Then lst.Add(s)
        Next
        If lst.Count > 0 Then
            drf("参与人") = String.Join(",",lst.ToArray)
else
drf("参与人") = nothing
        End If
End Select

--  作者:miaoqingqing
--  发布时间:2020/4/8 17:50:00
--  

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


想实现像上图,参与人自动根据右边3列值生成值,自动排除重复值,李四
[此贴子已经被作者于2020/4/8 18:11:50编辑过]

--  作者:miaoqingqing
--  发布时间:2020/4/9 8:02:00
--  回复:(有点蓝)Dim drf As DataRow = e.DataRowSele...
蓝总,前楼代码不是想实现的效果,辛苦再帮忙
--  作者:有点蓝
--  发布时间:2020/4/9 9:26:00
--  
旧数据重置一下列
--  作者:miaoqingqing
--  发布时间:2020/4/9 9:36:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:screenshot_20200409_093334.jpg
图片点击可在新窗口打开查看
Dim drf As DataRow = e.DataRow
Select Case e.DataCol.Name
Case "裁判员","守门员","中锋队员"
Dim lst As new List(of String)
Dim nms() As String = {"裁判员","守门员","中锋队员"}
\'Dim nms() As String = drf("参与人")
For Each s As String In nms
If drf.IsNull(s) = False AndAlso lst.Contains(s) = False Then lst.Add(s)
Next
If lst.Count > 0 Then
drf("参与人") = String.Join(",",lst.ToArray)
Else
drf("参与人") = Nothing
End If
End Select

蓝总,参与人姓名被替换了,还没去处重复
[此贴子已经被作者于2020/4/9 9:37:13编辑过]

--  作者:有点蓝
--  发布时间:2020/4/9 10:09:00
--  
If drf.IsNull(s) = False AndAlso lst.Contains(s) = False Then lst.Add(s)
改为
If drf.IsNull(s) = False AndAlso lst.Contains(drf.IsNull(s) ) = False Then lst.Add(drf(s) )

--  作者:miaoqingqing
--  发布时间:2020/4/9 10:16:00
--  回复:(有点蓝)If drf.IsNull(s) = False AndAlso l...
参与人,还是不能去除重复值
[此贴子已经被作者于2020/4/9 10:16:09编辑过]