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();
 


posted @ 2020-08-21 09:22  一曲丶一执念  阅读(1086)  评论(0)    收藏  举报