[英]Test equality of two lists
我必須檢查兩個列表的相等性,包括它們的元素以及它們的序列。 我正在使用以下但它不起作用
public class SampleClass
{
public string Id { get; set; }
public string Name { get; set; }
}
[TestMethod]
public void EqualityTest()
{
var list1 = new List<SampleClass>
{
new SampleClass {Id = "11", Name = "abc"},
new SampleClass {Id = "22", Name = "xyz"}
};
var list2 = new List<SampleClass>
{
new SampleClass {Id = "11", Name = "abc"},
new SampleClass {Id = "22", Name = "xyz"}
};
Assert.IsTrue(Enumerable.SequenceEqual(list1, list2));
}
請提出任何解決方案。
由於您沒有覆蓋Equals
或實現IEquatable<SampleClass>
您只是獲得了默認比較,它檢查引用是否相等。
你想要這樣的東西:
public class SampleClass : IEquatable<SampleClass>
{
public string Id { get; set; }
public string Name { get; set; }
public bool Equals(SampleClass obj)
{
if(obj == null) return false;
return obj.Id == this.Id && obj.Name == this.Name
}
public override bool Equals(object obj) => Equals(obj as SampleClass);
}
我建議使用深度比較庫,例如Compare-Net-Objects
只需導入 NuGet 包
Install-Package CompareNETObjects
並調用輔助方法
list1.ShouldCompare(list2);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.