【问题标题】:Comparing two list box and displaying the differences (VB.net)比较两个列表框并显示差异(VB.net)
【发布时间】:2014-03-02 08:08:22
【问题描述】:

您好,我的申请遇到问题。我正在尝试将列表加载到 listbox1 中,然后刷新 listbox2 中的相同列表(但结果可能不同),然后比较两者并在 textbox1 中显示两个列表框之间的差异。我已经到了能够判断是否存在差异的地步,但是当它发布到文本框中时,它会显示整个列表框而不是差异。

这有点啰嗦。对不起。下面是我的代码:


 TextBox1.Text = ""
    Dim Folder As String = My.Settings.path 
    ListBox2.Items.Clear()
    For Each File As String In My.Computer.FileSystem.GetFiles _
                                                (Folder, FileIO.SearchOption.SearchAllSubDirectories)
        ListBox2.Items.Add(IO.Path.GetFileName(File)) 
    Next

' 这就是问题所在 - 系统比较项目并在文本框中显示所有项目。

For Each item In ListBox1.Items
        If item.ToString = ListBox2.Items.ToString Then

        Else
            TextBox1.Text += (Environment.NewLine + item.ToString)
        End If
    Next

感谢您的帮助。

【问题讨论】:

    标签: vb.net textbox listbox compare difference


    【解决方案1】:

    您可以使用 LINQ。此示例将查找 ListBox1 中而不是 ListBox2 中的所有项目:

    Dim result As List(Of String) = (From s1 As String In Me.ListBox1.Items Where Not Me.ListBox2.Items.Contains(s1) Select s1).ToList()
    
    Me.TextBox1.Text = String.Join(Environment.NewLine, result)
    

    【讨论】:

    • 这就是我要找的。谢谢!
    【解决方案2】:

    如果我理解正确,您需要一份两个列表之间差异的列表。
    意思是,一个列表包含第一个列表中不存在于第二个列表中的元素以及存在于第二个列表中但不存在于第一个列表中的元素

    Dim list1 = from li in listBox1.Items select li
    Dim list2 = from li in listBox2.Items select li
    Dim list3 = list1.Except(list2).Union(list2.Except(list1))
    textBox1.Text = string.Join(Environment.NewLine, list3)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-10
      • 2017-05-10
      • 1970-01-01
      • 2014-02-26
      • 1970-01-01
      • 2013-04-25
      • 1970-01-01
      相关资源
      最近更新 更多