删除comboBox中的重复项

时间:2012-03-13 10:28:04

标签: c#

我必须删除组合框中的重复项。

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

4 个答案:

答案 0 :(得分:5)

已更新:没有注意到您有多维列表。 @ntziolis是第一个抓住这个并且他的回答是正确的。

如果你使用的是C#3.0或更高版本,你可以这样做:

list = list.SelectMany(i => i).Distinct().ToList();

确保顶部有using System.Linq

答案 1 :(得分:2)

你需要检查已经添加的项目,如下所示,shich跳过已在组合框中添加的项目

for (int i = 0; i < list[0].Count; i++)    
{                 

    if (!comboBox1.Items.Contains(list[0][i]) )
    {  
       cbnama.Items.Add(list[0][i]);     
     }
}

答案 2 :(得分:2)

一般来说,这可以通过使用IEnumerable的Distinct扩展方法来解决,请参见此处:
http://msdn.microsoft.com/en-us/library/bb348436.aspx

但是,由于您使用的是多维列表/数组,因此需要SelectMany来缩小尺寸才能调用Distinct,这也会稍微更改代码的其余部分,因此这里是孔方法:

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

答案 3 :(得分:0)

请检查此示例....并根据需要对其进行操作......

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