如何比较 2 个不同列表视图中的项目
How to compare the items in 2 different listviews
我正在尝试通过按下按钮将一个列表视图中的项目与另一个列表视图中的项目进行比较。我想用这台印刷机将所有项目从一个视图转移到另一个视图。但只有在第二个列表视图中没有全部准备好的项目。
到目前为止我尝试过的:
ElseIf Not ListView8.Items.Count = 0 Then
For Each item As ListViewItem In ListView8.Items
For Each item1 As ListViewItem In ListView7.Items
If Not item.Text.Equals(item1.Text) Then
ListView7.Items.Remove(item1)
ListView8.Items.Add(item1)
End If
Next
Next
End If
当我执行此代码时,它匹配每个列表视图中的第一个项目,然后只有一个项目发生变化,然后它们不匹配,即使在第二个视图中已准备就绪,该项目也会被插入。
例如你可以这样做:
Dim newItems = From a In listView1.Items.OfType(Of ListViewItem)
Where (
Aggregate b In listView2.Items.OfType(Of ListViewItem)
Where b.Text.ToLower.Equals(a.Text.ToLower)
Into Count()
) = 0
Select a
newItems.ToList.ForEach(Sub(a)
listView2.Items.Add(DirectCast(a.Clone, ListViewItem))
listView1.Items.Remove(a)
End Sub)
我正在尝试通过按下按钮将一个列表视图中的项目与另一个列表视图中的项目进行比较。我想用这台印刷机将所有项目从一个视图转移到另一个视图。但只有在第二个列表视图中没有全部准备好的项目。
到目前为止我尝试过的:
ElseIf Not ListView8.Items.Count = 0 Then
For Each item As ListViewItem In ListView8.Items
For Each item1 As ListViewItem In ListView7.Items
If Not item.Text.Equals(item1.Text) Then
ListView7.Items.Remove(item1)
ListView8.Items.Add(item1)
End If
Next
Next
End If
当我执行此代码时,它匹配每个列表视图中的第一个项目,然后只有一个项目发生变化,然后它们不匹配,即使在第二个视图中已准备就绪,该项目也会被插入。
例如你可以这样做:
Dim newItems = From a In listView1.Items.OfType(Of ListViewItem)
Where (
Aggregate b In listView2.Items.OfType(Of ListViewItem)
Where b.Text.ToLower.Equals(a.Text.ToLower)
Into Count()
) = 0
Select a
newItems.ToList.ForEach(Sub(a)
listView2.Items.Add(DirectCast(a.Clone, ListViewItem))
listView1.Items.Remove(a)
End Sub)