2

使用 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);

我正在寻找一个在比较时返回 true 的断言,a因为b嵌套集合在结构/内容中匹配,即使它们不是同一个列表实例。

我错过了一个简单的方法吗?写一个IEqualityComparer<T>是一种选择,但我希望有一条简单的路线.... :-)

4

1 回答 1

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;
}
于 2015-06-17T19:50:55.650 回答