C# 交集、差集、并集、子集、真子集、集合元素是否全等

发布时间 2023-07-17 16:45:03作者: 今晚再打老虎
 var source = new List<int>() { 1, 2, 3, 4 };
  var target = new List<int>() { 1, 2, 3, 5};
  var target1 = new List<int>() { 5 };
  var target2 = new List<int>() { 1, 2, 3};

4
一、交集
1、需判断两个集合是否存在交集,则使用Hashset中的Overlaps方法

   // 交集(source 与 targe是否有共同元素)
   var result = source.ToHashSet().Overlaps(target);  // true
   var result1 = source.ToHashSet().Overlaps(target1); // false

2、需获取两个集合的交集,一般使用的Intersect方法

  // 交集(A与B中的共同元素)
   var result = source.Intersect(target);  // {1,2,3}

二、差集(Except)
   // 差集(A - B中的元素)
   var result = source.Except(target);  // {4}
   var result1 = source.Except(target1);  // {1,2,3,4}

三、并集(Union)
   // 并集(A + B)
   var result = source.Union(target);  // {1,2,3,4,5}

四、子集(IsSubsetOf)
   // 子集(A是B的子集合或者全等集合)
   var result = target.ToHashSet().IsSubsetOf(source);  // false
   var result1 = target1.ToHashSet().IsSubsetOf(source);  // false
   var result2 = target2.ToHashSet().IsSubsetOf(source);  // true
   var result3 = source.ToHashSet().IsSubsetOf(source); // true

五、真子集(IsProperSubsetOf)
    // 真子集(A是B的子集合)
    var result = target.ToHashSet().IsProperSubsetOf(source);   // false
    var result1 = target1.ToHashSet().IsProperSubsetOf(source); // false
    var result2 = target2.ToHashSet().IsProperSubsetOf(source); // true
    var result3 = source.ToHashSet().IsProperSubsetOf(source);  // false

六、集合是否全等(SetEquals)
    // 只用于判断A与B中不存在重复元素
    var result = source.ToHashSet().SetEquals(target);   // false
    var result1 = source.ToHashSet().SetEquals(source); // true