删除组合框中的重复项
本文关键字:组合 删除 | 更新日期: 2023-09-27 18:27:31
我必须删除组合框中的重复项。
private void cbnama_Click(object sender, EventArgs e)
{
List<string>[] list;
list = mDatabase.Viewpengujian();
cbnama.Items.Clear();
for (int i = 0; i < list[0].Count; i++)
{
cbnama.Items.Add(list[0][i]);
}
}
示例:
test1
test2
test2
test3
test3
更新:没有注意到你有一个多维列表@恩齐奥利斯是第一个明白这一点的人,他的答案是正确的。
如果你使用的是C#3.0或更高版本,你可以这样做:
list = list.SelectMany(i => i).Distinct().ToList();
确保顶部有using System.Linq
。
u需要检查是否已添加项目,如下所示,跳过组合框中已添加的项目
for (int i = 0; i < list[0].Count; i++)
{
if (!comboBox1.Items.Contains(list[0][i]) )
{
cbnama.Items.Add(list[0][i]);
}
}
通常,这可以通过使用IEnumerable的Distinct
扩展方法来解决,请参阅此处:
http://msdn.microsoft.com/en-us/library/bb348436.aspx
但是,由于您使用的是多维列表/数组,因此在调用Distinct
之前,您需要SelectMany
来展平您的维度,这也会稍微更改代码的其余部分,因此这里是hole方法:
private void cbnama_Click(object sender, EventArgs e)
{
// this will give you an IEnumerable<string>
var list = mDatabase.Viewpengujian()
.SelectMany(i => i)
.Distinct();
cbnama.Items.Clear();
// since now list is a IEnumerable<string> you can just loop through it
foreach (var item in list)
{
cbnama.Items.Add(item);
}
}
只需查看此示例。。。。并根据您的需要进行操作。。。
For i As Int16 = 0 To Me.ComboBox1.Items.Count - 2
For j As Int16 = Me.ComboBox1.Items.Count - 1 To i + 1 Step -1
If Me.ComboBox1.Items(i).ToString = Me.ComboBox1.Items(j).ToString Then
Me.ComboBox1.Items.RemoveAt(j)
End If
Next
Next