我正在尝试将listbox1项目与listbox2项目进行比较,然后删除重复项目。
listbox1包含“link1 link2 link3 link4 link5” 'listbox1是下载项目列表
listbox2包含“link9 link5 link3” 'listbox2是下载项目列表
由于list3中已经存在“link3”和“link5”,我想将它们从listbox1中删除。
请帮帮我。
以下代码不起作用。
If listbox1.Items.Contains(listbox2.Items) Then
listbox1.Items.Remove(listbox2.Items)
end if
答案 0 :(得分:2)
我从您的示例代码中了解到您希望从Listbox2中已经存在的Listbox1中删除项目。然后使用下面的代码。
For Each itm In ListBox2.Items
If ListBox1.Items.Contains(itm) Then ListBox1.Items.Remove(itm)
Next
这里我们遍历Listbox2的所有项目,并在它们存在的情况下将它们从Listbox1中删除。
答案 1 :(得分:1)
你可以用一个循环来做到这一点。对不起,我只说C#,而不是VB.NET,但概念很清楚:
foreach (var item2 in listbox2.Items)
{
if (listbox1.Items.Contains(item2))
listbox1.Items.Remove(item2);
}
另外,你可以尝试使用LINQ:
foreach (var item in listbox2.Items)
{
var inOtherList = (from it1 in listbox1.Items where it1.Equals(item) select it1);
foreach (var item in inOtherOtherList)
listbox1.Items.Remove(item);
}
答案 2 :(得分:0)
解决同一问题的另一种方法:识别公共集,然后将其从第一个列表框的Items集合中删除
Dim common = listbox1.Items.Cast(Of string)().
Intersect(listbox2.Items.Cast( Of string)()).
ToList()
for each x in common
listbox1.Items.Remove(x)
Next
答案 3 :(得分:0)
您也可以这样使用:将两个列表框中的不同项目列入列表框
ListBox1.Items.AddRange(ListBox2.Items)
Dim DistinctObj = (From LBI As Object In ListBox1.Items Distinct Select LBI).Cast(Of String)().ToArray
ListBox1.Items.Clear()
ListBox2.Items.Clear()
ListBox1.Items.AddRange(DistinctObj)