C# 比较两个强类型列表

C# 比较两个强类型列表,c#,linq,.net-core,icollection,C#,Linq,.net Core,Icollection,我强烈地列出了数据,我想找出数据中的差异。我使用了除,但我得到的所有结果,我只希望收到 expectedEmailValidationDtoList.Add(new EmailValidationDto { EmailAddress = "testemail889@hotmail.com", IsEmailValid = false, ValidityChecked = true }); 我想达到以下几点: 1-如果两个列表数据相等或不相等? 2-记录的差异 电子邮件类 列

我强烈地列出了数据,我想找出数据中的差异。我使用了除,但我得到的所有结果,我只希望收到

expectedEmailValidationDtoList.Add(new EmailValidationDto { EmailAddress = "testemail889@hotmail.com", IsEmailValid = false, ValidityChecked = true });
我想达到以下几点:

1-如果两个列表数据相等或不相等? 2-记录的差异

电子邮件类 列表
var expectedEmailValidationDtoList=new List();
expectedEmailValidationDtoList.Add(新的EmailValidationDto{EmailAddress=”Myemail@hotmail.com“,IsEmailValid=true,ValidityChecked=true});
expectedEmailValidationDtoList.Add(新的EmailValidationDto{EmailAddress=”TestEmail009@hotmail.com“,IsEmailValid=true,ValidityChecked=true});
expectedEmailValidationDtoList.Add(新的EmailValidationDto{EmailAddress=”devOps@hotmail.com“,IsEmailValid=true,ValidityChecked=true});
expectedEmailValidationDtoList.Add(新的EmailValidationDto{EmailAddress=“testemail”,IsEmailValid=false,ValidityChecked=true});
expectedEmailValidationDtoList.Add(新的EmailValidationDto{EmailAddress=”testemail2@hotmail,IsEmailValid=false,ValidityChecked=true});
expectedEmailValidationDtoList.Add(新的EmailValidationDto{EmailAddress=“testemail3.com”,IsEmailValid=false,ValidityChecked=true});
expectedEmailValidationDtoList.Add(新的EmailValidationDto{EmailAddress=“ccccc.com”,IsEmailValid=false,ValidityChecked=true});
expectedEmailValidationDtoList.Add(新的EmailValidationDto{EmailAddress=”testemail889@hotmail.com,IsEmailValid=false,ValidityChecked=true});
var expectedEmailValidationDtoList2=新列表();
expectedEmailValidationDtoList2.Add(新的EmailValidationDto{EmailAddress=”khurram@hotmail.com“,IsEmailValid=true,ValidityChecked=true});
expectedEmailValidationDtoList2.Add(新的EmailValidationDto{EmailAddress=”TestEmail009@hotmail.com“,IsEmailValid=true,ValidityChecked=true});
expectedEmailValidationDtoList2.Add(新的EmailValidationDto{EmailAddress=”devOps@hotmail.com“,IsEmailValid=true,ValidityChecked=true});
expectedEmailValidationDtoList2.Add(新的EmailValidationDto{EmailAddress=“testemail”,IsEmailValid=false,ValidityChecked=true});
expectedEmailValidationDtoList2.Add(新的EmailValidationDto{EmailAddress=”testemail2@hotmail,IsEmailValid=false,ValidityChecked=true});
expectedEmailValidationDtoList2.Add(新的EmailValidationDto{EmailAddress=“testemail3.com”,IsEmailValid=false,ValidityChecked=true});
expectedEmailValidationDtoList2.Add(新的EmailValidationDto{EmailAddress=“ccccc.com”,IsEmailValid=false,ValidityChecked=true});
var d1=expectedEmailValidationDtoList.Except(expectedEmailValidationDtoList2.ToList();
var d2=expectedEmailValidationDtoList2.Except(expectedEmailValidationDtoList.ToList();
您可以使用Where()和下面的任意()来比较这两个列表:

    var d1 = expectedEmailValidationDtoList1
        .Where(email1 => !expectedEmailValidationDtoList2
            .Any(email2 => email1.EmailAddress
                .Equals(email2.EmailAddress, StringComparison.InvariantCultureIgnoreCase)));
    var d2 = expectedEmailValidationDtoList2
        .Where(email1 => !expectedEmailValidationDtoList1
            .Any(email2 => email1.EmailAddress
                .Equals(email2.EmailAddress, StringComparison.InvariantCultureIgnoreCase)));
或者使用All()


除非您重写
Equals
GetHashCode
,或提供
IEqualityComparer
,否则您将在参考方面比较项目,我怀疑这不是您想要的。这是否回答了您的问题?我不是拼图中缺少的东西,我遵循了康奈尔的方法,得到了同样的结果
var expectedEmailValidationDtoList = new List<EmailValidationDto>();

        expectedEmailValidationDtoList.Add(new EmailValidationDto { EmailAddress = "Myemail@hotmail.com", IsEmailValid = true, ValidityChecked = true });
        expectedEmailValidationDtoList.Add(new EmailValidationDto { EmailAddress = "TestEmail009@hotmail.com", IsEmailValid = true, ValidityChecked = true });
        expectedEmailValidationDtoList.Add(new EmailValidationDto { EmailAddress = "devOps@hotmail.com", IsEmailValid = true, ValidityChecked = true });
        expectedEmailValidationDtoList.Add(new EmailValidationDto { EmailAddress = "testemail", IsEmailValid = false, ValidityChecked = true });
        expectedEmailValidationDtoList.Add(new EmailValidationDto { EmailAddress = "testemail2@hotmail", IsEmailValid = false, ValidityChecked = true });
        expectedEmailValidationDtoList.Add(new EmailValidationDto { EmailAddress = "testemail3.com", IsEmailValid = false, ValidityChecked = true });
        expectedEmailValidationDtoList.Add(new EmailValidationDto { EmailAddress = "ccccc.com", IsEmailValid = false, ValidityChecked = true });
        expectedEmailValidationDtoList.Add(new EmailValidationDto { EmailAddress = "testemail889@hotmail.com", IsEmailValid = false, ValidityChecked = true });

        var expectedEmailValidationDtoList2 = new List<EmailValidationDto>();

        expectedEmailValidationDtoList2.Add(new EmailValidationDto { EmailAddress = "khurram@hotmail.com", IsEmailValid = true, ValidityChecked = true });
        expectedEmailValidationDtoList2.Add(new EmailValidationDto { EmailAddress = "TestEmail009@hotmail.com", IsEmailValid = true, ValidityChecked = true });
        expectedEmailValidationDtoList2.Add(new EmailValidationDto { EmailAddress = "devOps@hotmail.com", IsEmailValid = true, ValidityChecked = true });
        expectedEmailValidationDtoList2.Add(new EmailValidationDto { EmailAddress = "testemail", IsEmailValid = false, ValidityChecked = true });
        expectedEmailValidationDtoList2.Add(new EmailValidationDto { EmailAddress = "testemail2@hotmail", IsEmailValid = false, ValidityChecked = true });
        expectedEmailValidationDtoList2.Add(new EmailValidationDto { EmailAddress = "testemail3.com", IsEmailValid = false, ValidityChecked = true });
        expectedEmailValidationDtoList2.Add(new EmailValidationDto { EmailAddress = "ccccc.com", IsEmailValid = false, ValidityChecked = true });


  var d1 = expectedEmailValidationDtoList.Except(expectedEmailValidationDtoList2).ToList();
  var d2 = expectedEmailValidationDtoList2.Except(expectedEmailValidationDtoList).ToList();
    var d1 = expectedEmailValidationDtoList1
        .Where(email1 => !expectedEmailValidationDtoList2
            .Any(email2 => email1.EmailAddress
                .Equals(email2.EmailAddress, StringComparison.InvariantCultureIgnoreCase)));
    var d2 = expectedEmailValidationDtoList2
        .Where(email1 => !expectedEmailValidationDtoList1
            .Any(email2 => email1.EmailAddress
                .Equals(email2.EmailAddress, StringComparison.InvariantCultureIgnoreCase)));
    var d21 = expectedEmailValidationDtoList1
        .Where(email1 => expectedEmailValidationDtoList2
            .All(email2 => !email1.EmailAddress
                .Equals(email2.EmailAddress, StringComparison.InvariantCultureIgnoreCase)));
    var d22 = expectedEmailValidationDtoList2
        .Where(email1 => expectedEmailValidationDtoList1
            .All(email2 => !email1.EmailAddress
                .Equals(email2.EmailAddress, StringComparison.InvariantCultureIgnoreCase)));