检查两个ISets是否具有相同实体的正确方法是什么

时间:2011-03-23 19:48:42

标签: c# .net performance nhibernate

我希望为以下类别实现Equals,其中Subs的顺序不相关

class Entity {
   ISet<SubEntity> Subs;
}

这可以在比较数千个实体的内循环中调用,因此性能可能是个问题。

从我粗略的探索中,我认为最好的选择是other.Subs.ExclusiveOr(Subs).IsEmpty。这是对的吗?

1 个答案:

答案 0 :(得分:0)

这将是实现所需功能的正确方法。如果性能成为问题,(当然在分析之后),那么您可以考虑添加一些启发式方法来确定两个集合是否具有相同的元素。 Jon Skeet有一个关于优化LINQ to Objects的博客系列,您可以查看this post。它研究了Intersect方法的操作,您可以使用它来确定集合相等性。