我需要确定两个集合是否包含完全相同的元素.顺序无关紧要.
例如,这两个数组应被视为相等:
IEnumerable<int> data = new []{3, 5, 6, 9};
IEnumerable<int> otherData = new []{6, 5, 9, 3}
一个集合不能包含任何不在另一个集合中的元素.
这可以使用内置的查询操作符来完成吗?考虑到元素的数量可能从几个到数百个,实现它的最有效方式是什么?
我需要确定两个集合是否包含完全相同的元素.顺序无关紧要.
例如,这两个数组应被视为相等:
IEnumerable<int> data = new []{3, 5, 6, 9};
IEnumerable<int> otherData = new []{6, 5, 9, 3}
一个集合不能包含任何不在另一个集合中的元素.
这可以使用内置的查询操作符来完成吗?考虑到元素的数量可能从几个到数百个,实现它的最有效方式是什么?
如果要将数组视为"集合",并忽略顺序和重复项,可以使用HashSet<T>.SetEquals
method:
var isEqual = new HashSet<int>(first).SetEquals(second);
否则,最好的 Select 可能是以相同的方式对两个序列进行排序,并使用SequenceEqual
来比较它们.