搜索带有重复项的ListBox

时间:2014-03-27 17:27:21

标签: c# listbox

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

我也想搜索ListBox以查找重复项并输出消息。

例如,如果ListBox如下:

Cat
Dog
Rat

什么都不应该发生。

但是如果ListBox如下:

Cat
Cat
Dog

我想要它清除或输出信息。

任何想法? 感谢

3 个答案:

答案 0 :(得分:0)

您是否可以切换到HashSet

所以你把所有内容放在HashSet中,然后将所有元素放入ListBox

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

HashSet始终包含唯一元素。

如果我这样做:

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

hashSet只包含一次“Hello”。

答案 1 :(得分:0)

你可以这样做吗?

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

答案 2 :(得分:0)

这是一个简单的实现,可以帮助您入门:

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"