使用Microsoft Visual Studio的内置单元测试框架时,如果子集合的内容相等,如何将子集合视为相等,如何比较包含嵌套集合的两个集合?
在下面的示例中,AreEquals
失败,因为每个列表包含不同的嵌套列表实例。
var a = new List<List<string>> { new List<string> { "a" } };
var b = new List<List<string>> { new List<string> { "a" } };
CollectionAssert.AreEqual(a, b);
我正在寻找一个在比较a
和b
时返回true的断言,因为嵌套集合在结构/内容中匹配,即使它们不是相同的列表实例。
我错过了一个简单的方法吗?写IEqualityComparer<T>
是一种选择,但我希望这是一条简单的路线....: - )
答案 0 :(得分:1)
public bool AreEqual(List<List<string>> la, List<List<string>> lb)
{
if(la == null || lb == null) return false;
if(la.Count() != lb.Count()) return false;
for(int i; i ++; i < la.Count())
{
if(la[i].Count() != lb[i].Count()) return false;
for(int j; j ++; j < la[i].Count())
{
if(la[i][j] != lb[i][j]) return false;
}
}
return true;
}