首页 > 解决方案 > 如何比较 2 个不同列表视图中的项目

问题描述

我正在尝试通过按下按钮将一个列表视图中的项目与另一个列表视图中的项目进行比较。我想用这台印刷机将所有项目从一个视图转移到另一个视图。但只有在第二个列表视图中尚未准备好的项目。

到目前为止我已经尝试过:

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

当我执行此代码时,它匹配每个列表视图中的第一个项目,然后只有一个项目更改然后它们不匹配,并且即使它在第二个视图中已经准备好,也会插入该项目。

标签: .netvb.netlistviewlistviewitem

解决方案


You can do for example:

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)

推荐阅读