在我的单元测试方法中创建了两个对象列表
即一个是expectedValueList
,另一个是actualvalueList
。
expectedValueList={a=1,b=2,c=3,d=4}
actualvalueList={d=4,b=2,c=3,a=1}
我在比较
CollectionAssert.AreEqual(expectedValueList, actualvalueList);
我需要从列表中排除"c" property
然后我想比较两个列表是否相同?
答案 0 :(得分:1)
假设两个列表都是List<CustomType>
,其中CustomType
有两个属性。现在您需要一种方法来比较两个列表但忽略一个值。
如果订单很重要,我会使用Enumerable.SequenceEqual
:
var expectedWithoutC = expectedValueList.Where(t => t.Name != "c");
var actualWithoutC = actualvalueList.Where(t => t.Name != "c");
bool bothEqual = expectedWithoutC.SequenceEqual(actualWithoutC);
请注意,如果我的推定是正确的,您需要覆盖Equals
(和GetHashCode
)。否则SequenceEqual
将只比较参考相等。
答案 1 :(得分:0)
假设expectedValueList
是Dictionary<string, int>
。
var expectedValueList = new SortedDictionary<string, int> { { "a", 1 }, { "b", 2 }, { "c", 3 }, { "d", 4 } };
expectedValueList.Remove("c");
var actualValueList = new SortedDictionary<string, int> { { "d", 4 }, { "b", 2 }, { "c", 3 }, { "a", 1 } };
actualValueList.Remove("c");
// Will return false if the order is different.
CollectionAssert.AreEqual(expectedValueList, actualvalueList);