从列表视图中删除重复项
本文关键字:删除 列表 视图 | 更新日期: 2023-09-27 17:56:34
我已将数据绑定到来自多个来源的ListView
。并且有重复的数据,我想从该ListView
中删除所有重复项.我使用了以下代码,但它没有帮助。
listview.Sorting = System.Windows.Forms.SortOrder.Ascending;
for (int i = 0; i < listview.Items.Count - 1; i++)
{
if (listview.Items[i].Tag == listview.Items[i + 1].Tag)
{
listview.Items[i + 1].Remove();
}
}
如果没有一个好的、最小的、完整的代码示例,就不可能确定问题是什么。但是,Tag
值很可能是引用类型,而不是实际上相同的对象实例。
假设对象重写了 Equals()
方法,则可以改用该方法修复它:
listview.Sorting = System.Windows.Forms.SortOrder.Ascending;
for (int i = 0; i < listview.Items.Count - 1; i++)
{
if (listview.Items[i].Tag.Equals(listview.Items[i + 1].Tag))
{
listview.Items[i + 1].Remove();
i--;
}
}
请注意,您还有一个错误,如果给定值有三个或更多重复项,您将跳过检查元素。您可以通过在删除元素时递减i
来解决此问题(见上文)。