我有一個類「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