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