两个List集合做数据对比

两个对比List数据对比

List 继承了Enumerable ,Enumerable 中有一个Except方法
在这里插入图片描述
它又两个实现:

  • 第一个实现是通过使用默认的相等比较器对值进行比较,生成两个序列的差集。
  • 第二个实现是通过使用指定的 IEqualityComparer 对值进行比较,生成两个序列的差集。

这是用默认的相等对比器
这种方式一般都是用来比较简单数组或者字符串内容

double[] numbers1 = {
    
     2.0, 2.0, 2.1, 2.2, 2.3, 2.3, 2.4, 2.5 };
double[] numbers2 = {
    
     2.2 };

IEnumerable<double> onlyInFirstSet = numbers1.Except(numbers2);

foreach (double number in onlyInFirstSet)
    Console.WriteLine(number);

这里的输出结果:
2
2.1
2.3
2.4
2.5


使用指定的 IEqualityComparer 对值进行比较
这种可以用来对比对象集合

模型

namespace 测试项目.Test
{
    
    
	public class test{
    
    
		public int id{
    
    get;set;}
		public string name{
    
    get;set;}
		public string tel{
    
    get;set;}
		public int age{
    
    get;set;}
		public string clas{
    
    get;set;}
	}
  public class testComparer : IEqualityComparer<test>
    {
    
    
        public bool Equals(test x, test y)
        {
    
    
            return x.name== y.name && x.tel== y.tel;
        }

        public int GetHashCode(test obj)
        {
    
    
            return obj.name.GetHashCode() ^ obj.tel.GetHashCode();
        }
    }
}

使用方法:

List<test> list=...这是第一个对象集合
List<test> list2=...这是第二个集合


 var different = list.Except(list2,new testComparer()).ToList();
 这是查询第一个集合里有但是第二个集合里面没有的数据

猜你喜欢

转载自blog.csdn.net/qq_42455262/article/details/129687087