如何将 List<T> 中的项目添加到组合框中但在 C# 中不重复
How to add items from List<T> into Combo Box but not duplicates in C#
在 WPF 项目中,我有一个名为 "items" 的简单列表,其中包含以下内容:
EURUSD
EURUSD
NZDUSD
我想用上述的唯一实例填充组合框。因此,我编写了一个 foreach 循环来遍历 "items" 成员,然后编写了一个 for 循环来检查给定成员是否已存在于组合框中(因此不要添加重复项)。我的代码是:
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;
}
}
}
标签的内容只是我试图找出错误所在。出于同样的原因,当它匹配重复项并继续下一个 "i" 时,它仍然会将符号添加到组合框中。
我确定我忽略了一些愚蠢的东西,但我想不通。
抛开数据绑定和可能的平等问题...using System.Linq;
您可以将完整的 foreach
替换为:
foreach (var symbol in items.Select(i => i.Symbol).Distinct())
{
combobox.Items.Add(symbol);
}
在 WPF 项目中,我有一个名为 "items" 的简单列表,其中包含以下内容:
EURUSD
EURUSD
NZDUSD
我想用上述的唯一实例填充组合框。因此,我编写了一个 foreach 循环来遍历 "items" 成员,然后编写了一个 for 循环来检查给定成员是否已存在于组合框中(因此不要添加重复项)。我的代码是:
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;
}
}
}
标签的内容只是我试图找出错误所在。出于同样的原因,当它匹配重复项并继续下一个 "i" 时,它仍然会将符号添加到组合框中。
我确定我忽略了一些愚蠢的东西,但我想不通。
抛开数据绑定和可能的平等问题...using System.Linq;
您可以将完整的 foreach
替换为:
foreach (var symbol in items.Select(i => i.Symbol).Distinct())
{
combobox.Items.Add(symbol);
}