C# 搜索具有重复项的列表框

C# 搜索具有重复项的列表框,c#,listbox,C#,Listbox,我有一个列表框,每当客户端向服务器发送消息时,它都会添加文本 我也希望搜索列表框以查找重复项并输出消息 例如,如果列表框如下所示: Cat Dog Rat 什么都不应该发生 但是,如果列表框如下所示: Cat Cat Dog 我希望它清除或输出一条消息 有什么想法吗? 谢谢您是否可以切换到哈希集 因此,您将所有内容放入一个哈希集中,然后将所有元素放入列表框中 HashSet<String> hashSet = new HashSet<String>(); hashS

我有一个列表框,每当客户端向服务器发送消息时,它都会添加文本

我也希望搜索列表框以查找重复项并输出消息

例如,如果列表框如下所示:

Cat
Dog
Rat
什么都不应该发生

但是,如果列表框如下所示:

Cat
Cat
Dog
我希望它清除或输出一条消息

有什么想法吗?
谢谢

您是否可以切换到
哈希集

因此,您将所有内容放入一个
哈希集中,然后将所有元素放入
列表框中

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

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);
var duplicates=myListBox.Items.Cast()。其中(i=>i.Count()>1);
if(重复的.Any())
//复制品
控制台。WriteLine(“警报!”);
其他的
myListBox.Items.Add(myString);

以下是一个简单的实现,让您开始:

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());
                }
            }
        }

看一看:可能不是最有效的方法,但您可以创建一个方法,将列表框中的每个项添加到数组列表中,但在将每个项输入数组列表之前,请检查该项是否尚未出现在所述数组列表中。您可以使用:myListBox.Items.Cast()。其中(i=>i.Count()>1);谢谢大家的帮助,但这一次对我来说非常有效。
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"