Как правильно проверить, имеют ли два ISets одинаковые сущности? - PullRequest
0 голосов
/ 23 марта 2011

Я хочу реализовать Equals для следующего класса, где порядок подпрограмм не имеет значения

class Entity {
   ISet<SubEntity> Subs;
}

Это может вызываться во внутреннем цикле, сравнивающем несколько тысяч объектов, поэтому производительность может быть проблемой.

Из моего беглого исследования я считаю, что лучший вариант - other.Subs.ExclusiveOr(Subs).IsEmpty. Это правильно?

1 Ответ

0 голосов
/ 24 марта 2011

Это был бы правильный способ реализовать требуемую функциональность.Если производительность становится проблемой (после профилирования, конечно), то вы можете рассмотреть возможность добавления некоторой эвристики для определения, имеют ли два набора одинаковые элементы.У Джона Скита есть серия блогов об оптимизации LINQ to Objects, вы можете посмотреть этот пост .Он исследует работу метода Intersect, который можно использовать для определения равенства множеств.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...