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

时间:2015-04-08 14:18:40

标签: vb.net linq loops foreach listbox

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

如果该项目未包含已批准的项目,则将其删除。 问题是当我添加第二个批准的项目时,例如' .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

1 个答案:

答案 0 :(得分:1)

嗯,是的,如果' item'是" .pdf",然后ListBox1.Items(i)不包含' item'如果ListBox1.Items(i)是" .txt"。而不是缓慢低效的嵌套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以使用它。