C# 如何从列表中添加项目<;T>;进入组合框,但在C中不重复#
在WPF项目中,我有一个名为“项目”的简单列表,其中包含以下内容:C# 如何从列表中添加项目<;T>;进入组合框,但在C中不重复#,c#,wpf,list,combobox,duplicates,C#,Wpf,List,Combobox,Duplicates,在WPF项目中,我有一个名为“项目”的简单列表,其中包含以下内容: EURUSD EURUSD NZDUSD 我想用上面的唯一实例填充一个组合框。因此,我编写了一个foreach循环来遍历“items”成员,然后编写了一个for循环来检查combobox中是否已经存在给定的成员(这样就不会添加重复的成员)。我的代码是: private void Test(object sender, EventArgs e) { comboBox.Items.Clear(); foreach
EURUSD
EURUSD
NZDUSD
我想用上面的唯一实例填充一个组合框。因此,我编写了一个foreach循环来遍历“items”成员,然后编写了一个for循环来检查combobox中是否已经存在给定的成员(这样就不会添加重复的成员)。我的代码是:
private void Test(object sender, EventArgs e)
{
comboBox.Items.Clear();
foreach (var positionz in items)
{
if (items.Count == 0) return;
int combocount = comboBox.Items.Count;
if (combocount == 0)
{
comboBox.Items.Add(positionz.Symbol);
continue;
}
for (int i = 0; i < combocount; i++)
{
if (comboBox.Items[i].ToString() == positionz.Symbol)
{
label.Content=i + "Good " + positionz.Symbol + " matches combo item " + comboBox.Items[i].ToString();
continue;
}
else { comboBox.Items.Add(positionz.Symbol); }
label_Copy.Content = i;
}
}
}
private void测试(对象发送方,事件参数e)
{
comboBox.Items.Clear();
foreach(项目中的变量位置Z)
{
如果(items.Count==0)返回;
int combocount=comboBox.Items.Count;
如果(combocount==0)
{
组合框.Items.Add(positionz.Symbol);
继续;
}
for(int i=0;i
标签上的东西只是我试图抓住错误的地方。出于同样的原因,当它匹配副本并继续到下一个“i”时,它仍然会将符号添加到组合框中
我确信我忽略了一些愚蠢的事情,但我无法理解。撇开数据绑定和可能的平等性问题不谈<代码>使用System.Linq您可以将完整的
foreach
替换为:
foreach (var symbol in items.Select(i => i.Symbol).Distinct())
{
combobox.Items.Add(symbol);
}
删除所有这些内容并使用适当的XAML和数据绑定。谢谢,我忘记了系统。Linq能够更好地处理列表。CollectionViewSource更适合这里,@BenediktSchroeder我完全知道这不是一个惯用的WPF解决方案,这表明它超出了这里的范围。。。这与最初的提案非常接近,并且符合OP的要求。它标有WPF!