如何将 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);
}