您好我的申请遇到了麻烦。我试图将列表加载到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
感谢您的帮助。
答案 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)