根据特定的成员值在列表中查找重复项

本文关键字:列表 查找 成员 | 更新日期: 2023-09-27 18:27:43

如何根据特定值在列表中找到重复项,并将重复项分组在一起?

如果我有相同电子邮件地址的项目,我希望它们作为重复项收集,因为我在收集中使用电子邮件地址作为"主键"。并非这些项目中的所有值都相同。

例如:

var numberOfTestcasesWithDuplicates = 
                                 Customers.GroupBy(x => x.emailaddress).ToList();

会给我一个重复项目的集合,但我想将重复的项目收集到分组集合中,在那里我可以管理这些项目,并查看哪些项目是重复的?

感谢

根据特定的成员值在列表中查找重复项

也许您只想要具有多个项目的组?

var numberOfTestcasesWithDuplicates = Customers.GroupBy(x => x.emailaddress)
                                               .Where(x => x.Count() > 1)
                                               .ToList();

.Where(p => p.Count() > 1)将检查组成该组的项目数。

如何根据特定值在列表中找到重复项,并将重复项组合在一起?

对我来说,这听起来像GroupBy。你已经在问题中的代码中完成了分组,你只需要使用结果。GroupBy的结果是组序列,其中每个组是一个密钥和共享该密钥的值序列。例如:

foreach (var group in Customers.GroupBy(x => x.emailaddress))
{
    Console.WriteLine("Customers with email address {0}", group.Key);
    foreach (var customer in group)
    {
        Console.WriteLine("  {0}", customer.Name); // Or whatever
    }
}