我有一个类“litem”包含字符串,整数和双打。我有一个名为“myList”的List(litem)。我想根据litem.c1在myList中找到重复项,它是litem的一个字符串元素。我需要修改这些重复的元素,将它们连接到具有唯一ID的重复对。问题是我的数据很大,我的代码很慢。 myList有220万个条目。我找到了重复这样:查找重复项并返回列表(类)在一个快速的方式
var duplicateItems = myList
.AsParallel()
.GroupBy(x => x.c1)
.Where(x => x.Count() > 1)
.Select(x => x.Key)
.ToList();
这运行在约3秒,返回约40.000字符串是重复的litem.c1值。然后我运行:
var result = myList
.AsParallel()
.Where(item => duplicateItems.Any(d => d.Equals(item.c1)))
.ToList();
这将返回80.000 litems我需要的清单,但它的运行时间超过30分钟,而100%加载i7处理器。在此之后,我使用一个关于resut的foreach添加找到的重复的litems之间的链接。问题是如何以更便宜的方式获得结果?
duplicateItems应该是一个HashSet而不是一个列表! –
schglurps