比较两个列表框并显示差异(VB.net)

时间:2014-03-02 08:08:23

标签: vb.net textbox listbox compare difference

您好我的申请遇到了麻烦。我试图将列表加载到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

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您可以使用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)

答案 1 :(得分:0)

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

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)