Following query groups tests by first test instance, which have same scores. Then you just select group keys:
from t in tests
group t by tests.First(x => Enumerable.SequenceEqual(x.Scores, t.Scores)) into g
select g.Key;
Returns user1
and user2
. Same with lambda syntax:
tests.GroupBy(t => tests.First(x => Enumerable.SequenceEqual(x.Scores,t.Scores)))
.Select(g => g.Key);
If you want last user to stay, then change First
to Last
, but First
is more efficient here, because it stops enumeration earlier.