vb.net 从列表框中删除另一个列表框中的项目

vb.net removing items from listbox that are in another listbox

我有两个列表框,一个包含批准的项目列表,用于循环遍历 listbox1 项目以查看其中的项目是否包含批准项目中的任何项目(例如“.txt”)

如果该项目不包含已批准的项目,则会将其删除。 问题是当我添加第二个批准的项目时,例如“.pdf”,由于循环,所有“.txt”文件也从列表中删除。

如果有任何解决此问题的想法,我将不胜感激,我想保留列表框中所有已批准的项目!谢谢

For Each item As Object In Me.lstApprovedItems.Items
For i As Integer = ListBox1.Items.Count - 1 To 0 Step -1
     If Not ListBox1.Items(i).Contains(item) Then
         ListBox1.Items.RemoveAt(i)
     End If
Next

嗯,是的,如果 'item' 是“.pdf”,那么 ListBox1.Items(i) 不包含 'item' 如果 ListBox1.Items(i) 是“ 。文本文件”。而不是缓慢低效的嵌套 For 循环,而是尝试使用一些 LINQ。像这样的怎么样?

Dim list1 as list(of string) = (From Item in Listbox1.Items Select Item Where lstApprovedItems.items.Contains(Item)).tolist()

我在 Contains 部分的语法可能有点不对,但你可以看到我要去哪里。

然后将为您提供当前在 Listbox1.items 中的所有项目的列表,这些项目也在 lstApprovedItems.items 中。然后您可以重新绑定您的 listbox1 以使用它。