搜索具有重复项的列表框
本文关键字:列表 搜索 | 更新日期: 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);