Эффективный способ сгруппировать все равные объекты, определенные IEqualityComparer
У меня есть большой список определенных объектов, которые имеют тип Order
, Кроме того, я определил IEqualityComparer<Order>
и моя цель состоит в том, чтобы эффективно создать список списков (или групп), где каждый подсписок содержит объекты, которые равны друг другу. Математически у меня есть отношение эквивалентности (IEqualityComparer) и я хочу получить список всех классов эквивалентности. Я думал об использовании HashSet<Order>
, Dictionary<>
или же Lookup<>
но они не кажутся идеальными для моего случая. Так есть идеи?
1 ответ
Я думаю, что-то вроде этого должно быть на работе
var uniqueItems = yourRawList.Distinct(yourComparer);
var result = uniqueItems.Select(i => new List<Order>(yourRawList.Where(o =>yourComparer.Equals(i, o))));