肥皂起泡泡
正如所写的那样,这个问题是模棱两可的。声明:..无论它们在列表中的位置如何,它们都有相同的元素。每个MyType对象可能在列表中出现多次。不指示是否要确保这两个列表具有同集对象或相同的不同集.如果要确保集合具有一点儿没错无论顺序如何,都可以使用相同的一组成员:// lists should have same count of items, and set difference must be emptyvar areEquivalent = (list1.Count == list2.Count) && !list1.Except(list2).Any();如果要确保两个集合具有相同的不同成员集(其中两个集合中的重复项都被忽略),可以使用:// check that [(A-B) Union (B-A)] is emptyvar areEquivalent = !list1.Except(list2).Union( list2.Except(list1) ).Any();使用SET操作(Intersect, Union, Except)比使用以下方法更有效Contains..在我看来,它也更好地表达了您的查询的期望。编辑:既然你已经澄清了你的问题,我可以说你想用第一种形式-因为重复很重要。下面是一个简单的示例,说明您得到了所需的结果:var a = new[] {1, 2, 3, 4, 4, 3, 1, 1, 2};var b = new[] { 4, 3, 2, 3, 1, 1, 1, 4, 2 };// result below should be true, since the two sets are equivalent...var areEquivalent = (a.Count() == b.Count()) && !a.Except(b).Any();