我必须删除组合框中的重复项。
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
答案 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