删除组合框中的重复项

本文关键字:组合 删除 | 更新日期: 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