搜索具有重复项的列表框

本文关键字:列表 搜索 | 更新日期: 2023-09-27 17:54:21

我有一个ListBox,每次客户端向服务器发送消息时都会添加文本。

我也想搜索ListBox查找重复和输出消息。

例如ListBox如下所示:

Cat
Dog
Rat

应该不会发生什么。

但是如果ListBox如下所示:

Cat
Cat
Dog

我希望它清除或输出消息。

任何想法?由于

搜索具有重复项的列表框

这里有一个简单的实现让您开始:

for (int i = 0; i < listBox1.Items.Count; i++)
        {
            for (int j = i + 1; j < listBox1.Items.Count; j++)
            {
                if (listBox1.Items[i].ToString() == listBox1.Items[j].ToString())
                {
                    Console.WriteLine("Duplicate {0}:{1}", listBox1.Items[i].ToString(), listBox1.Items[j].ToString());
                }
            }
        }
从列表框项示例中,上述代码的输出将产生:
"Duplicate Cat:Cat"

是否可以切换到HashSet ?

你把所有的元素放到HashSet中然后把所有的元素放到ListBox中。

HashSet<String> hashSet = new HashSet<String>();

HashSet总是包含唯一的元素。

如果我这样做:

hashSet.Add("Hello");
hashSet.Add("Hello");

hashSet将只包含一次"Hello"

你可以这样做吗?

var duplicates = myListBox.Items.Cast<string>().Where(i => i.Count() > 1);
if (duplicates.Any()) 
   // Duplicates
   Console.WriteLine("Alert !"); 
else 
   myListBox.Items.Add(myString);