在列表中查找对

时间:2017-05-27 13:58:01

标签: c#

所以我正在学校的一个项目,我必须编写一个代码,可以找到成对的2,3,4等...我已经知道如何找到2,3对等的对象:

for (int i = 0; i < list.Count; i++)
{
    for (int j = 0; j < list.Count; j++)
    {
        if (list[i].Efternamn == list[j].Efternamn && i != j)
        {
            textBox4.Text = "A pair was found!";
            break;
        }
        else
        {
            textBox4.Text = "No pairs!";
        }
    }
}

但是代码有点重复......有没有其他方法可以在没有多个for循环的情况下以有效的方式找到100或200对?

2 个答案:

答案 0 :(得分:1)

你学习字典或哈希表吗?您可以将每个条目放在字典中作为键,将计数作为值。

答案 1 :(得分:0)

不确定它是否在你的情况下作弊,但很容易用Linq完成。在这种情况下,Linq在内部使用字典(最有可能)。

var valuesAndCounts = list
    .GroupBy(x => x)
    .Select(g => new {Value=g.Key, Count=g.Count()})
    .Where(p => p.Count > 1);  // or == 2 or == 100 etc