如何根据特定值在列表中查找重复项目并将重复项目组合在一起?
如果我的项目具有相同的电子邮件地址,我希望将它们作为重复项收集,因为我在集合中使用电子邮件地址作为“主键”。并非所有值都在这些项目中相同。
例如:
var numberOfTestcasesWithDuplicates =
Customers.GroupBy(x => x.emailaddress).ToList();
会给我一组重复的项目,但后来我想将重复的项目收集到分组的集合中,我可以管理这些项目并查看哪些项目是重复的?
谢谢
答案 0 :(得分:6)
也许您只想要拥有多个项目的群组?
var numberOfTestcasesWithDuplicates = Customers.GroupBy(x => x.emailaddress)
.Where(x => x.Count() > 1)
.ToList();
.Where(p => p.Count() > 1)
将检查组成该组的项目数。
答案 1 :(得分:0)
如何根据特定值在列表中查找重复项目并将重复项目组合在一起?
听起来像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
}
}