I have an array of List<int>
, I'm using LINQ (thanks to this forum), to find duplicates, but after merging lists into one list, how can I retrieve a dictionary like this :
KEY -> duplicate value | VALUE -> list index where duplicate was found
Actually I'm doing this :
List<int> duplicates = hits.GroupBy(x => x)
.Where(g => g.Count() > 1)
.Select(g => g.Key)
.ToList();
Guess I should use SelectMany
You can map every element to (item, index) and then it will be easy to selected impacted indexes for each key.
var duplicates = hits.Select((item, index) => new {item, index})
.GroupBy(x => x.item)
.Where(g => g.Count() > 1)
.Select(g => new {Key = g.Key, Indexes = g.ToList().Select(x => x.index)})
.ToList();