1:创建自定义类,写入2个属性,并继承接口,重写三个方法
public class CompStrR : IEquatable<CompStrR>
{
/// <summary>
/// 原来数
/// </summary>
public string strA { get; set; }
/// <summary>
///去除空格和忽略大小写后的数
/// </summary>
public string strB { get; set; }
public bool Equals(CompStrR other)
{
if (other is null)
return false;
return this.strB == other.strB;
}
public override bool Equals(object obj) => Equals(obj as CompStrR);
public override int GetHashCode() => (strA, strB).GetHashCode();
//我由于只要对比STRB数据,所以就这样写
public override int GetHashCode() => (strB).GetHashCode();
}
2:实际中使用
IEnumerable<CompStrR> unionRR = new List<CompStrR>();//并集 两数组相加
IEnumerable<CompStrR> intersectRR = new List<CompStrR>();//交集 两数组共有
IEnumerable<CompStrR> exceptRR_NO_B = new List<CompStrR>();//a有b没有
IEnumerable<CompStrR> exceptRR_NO_A = new List<CompStrR>();//b有a没有
unionRR = rngRa.Union(rngRb);
intersectRR = rngRa.Intersect(rngRb);
exceptRR_NO_A = rngRb.Except(rngRa);
exceptRR_NO_B = rngRa.Except(rngRb);