从列表视图中删除重复项

本文关键字:删除 列表 视图 | 更新日期: 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来解决此问题(见上文)。