【发布时间】:2021-02-19 23:56:12
【问题描述】:
我有强烈的数据列表,我想找出数据的差异。我使用了 EXCEPT,但我得到了我只希望收到的所有结果
expectedEmailValidationDtoList.Add(new EmailValidationDto { EmailAddress = "testemail889@hotmail.com", IsEmailValid = false, ValidityChecked = true });
我想达到以下几点;
1- 如果两个列表数据相等或不相等? 2- 记录的差异
电子邮件类
public class EmailValidationDto
{
public string EmailAddress { get; set; }
public bool IsEmailValid { get; set; }
public bool ValidityChecked { get; set; }
}
列表
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();
【问题讨论】:
-
除非您覆盖
Equals和GetHashCode,或提供IEqualityComparer<EmailValidationDto>,否则您将根据引用比较项目,我怀疑这不是您想要的。 -
我不是拼图中缺少的东西,我遵循了康奈尔的方法并得到了相同的结果stackoverflow.com/questions/50098/…
标签: c# linq .net-core icollection