C# 2个集合比较是否相等
1.最好先排序。
Enumerable.SequenceEqual(list1.OrderBy(t => t), list2.OrderBy(t => t));
2.大概思路。
public static bool ScrambledEquals<T>(IEnumerable<T> list1, IEnumerable<T> list2) {
var cnt = new Dictionary<T, int>();
foreach (T s in list1) {
if (cnt.ContainsKey(s)) {
cnt[s]++;
} else {
cnt.Add(s, 1);
}
}
foreach (T s in list2) {
if (cnt.ContainsKey(s)) {
cnt[s]--;
} else {
return false;
}
}
return cnt.Values.All(c => c == 0);
}
或者采用求差集等方法。
var areEquivalent = !list1.Except(list2).Union( list2.Except(list1) ).Any();

浙公网安备 33010602011771号