2014-03-02 87 views
0

你好,我有麻烦与我的应用程序。我试图将一个列表加载到listbox1中,然后刷新listbox2中的相同列表(但可能会有不同的结果),然后比较两者并在textbox1中显示两个列表框之间的差异。我已经到了能够判断是否存在差异的地步,但是当它发布到文本框中时,它将显示整个列表框而不是差异。比较两个列表框并显示差异(VB.net)

这有点罗嗦。抱歉。下面是我的代码:


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

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

此元素的列表是什么我是寻找。谢谢! –

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) 
相关问题