如何解决C#比较两个强类型列表
我强烈列出了数据,我想找到数据上的差异。我使用了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",ValidityChecked = true });
expectedEmailValidationDtoList.Add(new EmailValidationDto { EmailAddress = "devOps@hotmail.com",ValidityChecked = true });
expectedEmailValidationDtoList.Add(new EmailValidationDto { EmailAddress = "testemail",ValidityChecked = true });
expectedEmailValidationDtoList.Add(new EmailValidationDto { EmailAddress = "testemail2@hotmail",ValidityChecked = true });
expectedEmailValidationDtoList.Add(new EmailValidationDto { EmailAddress = "testemail3.com",ValidityChecked = true });
expectedEmailValidationDtoList.Add(new EmailValidationDto { EmailAddress = "ccccc.com",ValidityChecked = true });
expectedEmailValidationDtoList.Add(new EmailValidationDto { EmailAddress = "testemail889@hotmail.com",ValidityChecked = true });
var expectedEmailValidationDtoList2 = new List<EmailValidationDto>();
expectedEmailValidationDtoList2.Add(new EmailValidationDto { EmailAddress = "khurram@hotmail.com",ValidityChecked = true });
expectedEmailValidationDtoList2.Add(new EmailValidationDto { EmailAddress = "Testemail009@hotmail.com",ValidityChecked = true });
expectedEmailValidationDtoList2.Add(new EmailValidationDto { EmailAddress = "devOps@hotmail.com",ValidityChecked = true });
expectedEmailValidationDtoList2.Add(new EmailValidationDto { EmailAddress = "testemail",ValidityChecked = true });
expectedEmailValidationDtoList2.Add(new EmailValidationDto { EmailAddress = "testemail2@hotmail",ValidityChecked = true });
expectedEmailValidationDtoList2.Add(new EmailValidationDto { EmailAddress = "testemail3.com",ValidityChecked = true });
expectedEmailValidationDtoList2.Add(new EmailValidationDto { EmailAddress = "ccccc.com",ValidityChecked = true });
var d1 = expectedEmailValidationDtoList.Except(expectedEmailValidationDtoList2).ToList();
var d2 = expectedEmailValidationDtoList2.Except(expectedEmailValidationDtoList).ToList();
解决方法
您可以使用如下所示的Where()和Any()来比较两个列表:
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()
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)));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。